J'utilise des sockets python pour recevoir des demandes de style web et de savon. Le code que j'ai estUtilisation de sockets python pour recevoir de grandes requêtes http
import socket
svrsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname();
svrsocket.bind((host,8091))
svrsocket.listen(1)
clientSocket, clientAddress = svrsocket.accept()
message = clientSocket.recv(4096)
Certaines des demandes de savon que je reçois, cependant, sont énormes. 650k énorme, et cela pourrait devenir plusieurs Mb. Au lieu de recv simple j'ai essayé
message = ''
while True:
data = clientSocket.recv(4096)
if len(data) == 0:
break;
message = message + data
mais je ne reçois jamais un bloc de données 0 octet avec Firefox ou Safari, bien que le python socket how to dit que je devrais.
Que puis-je faire pour contourner ce problème?