A mio avviso, qualsiasi codice che cerca di preventivare possibili problemi di rete è destinato a fallire: tu potresti determinare tramite il tuo "ping" personalizzato che il server è disponibile, poi potrebbe verificarsi una caduta di rete nel momento in cui cerchi di trasferire il file.
Secondo me, la soluzione è semplice: se devi comunicare qualcosa via rete, non stare a verificare preventivamente lo stato della rete e avvia l'operazione direttamente, poi gestisci in qualche modo l'errore, magari con un retry.