我有一个像客户端一样的简单功能。它发送事件消息并等待确认(为简单起见,我删除了该部分)。之后它将收到更多消息:
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() 但套接字仍然关闭。这是因为我正在返回数据并且我超出了函数范围吗?
我只想在我的程序中随时连接,然后毫无问题地接收和发送消息。