クライアントのように機能するシンプルな機能があります。イベントメッセージを送信し、ackを待ちます(簡単にするためにその部分を削除しました)。その後、さらに多くのメッセージを受信します。
def send_data(message):
"""Connect to server and get requests"""
sock = socket.socket()
host = 'localhost'
port = 8000
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host,port))
try:
if message:
sock.sendall(message)
# Look for the response
has_request = False
while not has_request:
data = sock.recv(1024)
#First I get ACK, code not listed here...
#Next iteration, I got my request message
has_request = True
finally:
print >> sys.stderr, 'Closing socket'
sock.close()
return data
__main__
私はこれをステートメントで呼んでいます:
if __name__ == '__main__':
server_data = send_data(event)
if server_data:
parse_request(server_data)
ただし、ソケットが自動的に閉じられないようにする必要があります。リクエストを解析した後、別のメッセージを送信する必要があるためです。sock.close()を削除しましたが、ソケットはまだ閉じています。これは、データを取得していて、関数の範囲外にあるためですか?
プログラム内でいつでも接続して、問題なくメッセージを送受信したいだけです。