Похоже, у вас есть клиент, отправляющий файл и ожидающий ответа сервера, но если вы не дадите серверу указание, что он полностью прочитал файл, recv () на стороне сервера будет зависать для получения дополнительных данных. Вы можете вызвать shutdown (SHUT_WR) на стороне клиента, как только клиент завершит отправку. Это информирует сервер о том, что после прочтения всех отправленных данных его больше нет.
Очень простой пример (отправка одного блоба данных на сервер и получение одного блоба данных в ответ):
Сервер
>>> from socket import *
>>> s=socket()
>>> s.bind(('',8000))
>>> s.listen(1)
>>> c,a = s.accept() # will hang here until a client connects
>>> recvd=''
>>> while True:
... data = c.recv(1024)
... if not data: break # recv() will return '' only if the client calls shutdown(SHUT_WR) or close()
... recvd += data
...
>>> recvd
'a message'
>>> c.sendall('a response')
>>> c.close() # done with client, could loop back to accept here
>>> s.close() # done with server
клиент
>>> from socket import *
>>> s=socket()
>>> s.connect(('localhost',8000))
>>> s.sendall('a message')
>>> s.shutdown(SHUT_WR) # tells server you're done sending, so recv won't wait for more
>>> recvd=''
>>> while True:
... data = s.recv(1024)
... if not data: break
... recvd += data
...
>>> recvd
'a response'
>>> s.close()