サーバー側と通信するためにPythonクライアントを作成しました。私がデータを研磨し終えるたびに、私はsock.shutdown(socket.SHUT_WR)
に電話しなければなりません。さもなければ、サーバーは何の反応もしません。しかしsock.shutdown(socket.SHUT_WR)
を呼び出した後、私は接続をsock.connect((HOST, PORT))
と再接続する必要があります。他の賢明な方法は、サーバーにデータを送信できません。では、どうすれば接続を閉じずに接続を維持できますか。 私のサンプルコードは、次のように:Pythonでシャットダウンソケット接続なしでデータを継続的に送信するには
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.sendall(data)
sock.shutdown(socket.SHUT_WR)
received = sock.recv(1024)
while len(received)>0:
received = sock.recv(1024)
sock.sendall(newdata) # this would throw exception
をサーバー側のコードは以下の通り:
def handle(self):
cur_thread = threading.current_thread()
while True:
self.data = self.rfile.read(bufsiz=100)
if not self.data:
print 'receive none!'
break
try:
data = self.data
print 'Received data, length: %d' % len(data)
self.wfile.write('get received data\n')
except Exception:
print 'exception!!'