La close() non la devi fare, se non alla fine delle comunicazioni (la close() chiude la socket).
Quello che devi fare è riprogettare un attimo il server, o meglio, il tuo protocollo di comunicazione.
Ad esempio, per indicare al server che hai finito di mandargli i dati, potresti mandargli una stringa fissa ("END"). Quando il server riceve questa stringa, smette di leggere.
Nel tuo caso, infatti, il server continua a leggere finchè non incontra la fine del file (ovvero, finchè non viene chiusa la socket... ma se la socket è chiusa, la comunicazione viene interrotta).
Quindi, il cilent invierà la richiesta al server e gli comunicherà che ha finito l'invio (nell'esempio che ti ho proposto, invierà la stringa "END").
Il server leggerà tutto quello che gli arriva finchè non incontra la stringa "END". A quel punto potrà procedere.
E' tutta questione di progettare bene il protocollo di comunicazione.
Ciao.![]()