我正在尝试在服务器-客户端之间创建类似对话框的内容。以下说明了这一点:
Client + Server
---------------------
send(foo) | recv(foo)
recv(bar) | send(bar)
send(foobar)| recv(foobar)
recv(barfoo)| send(barfoo)
etc.....................
因此,我要做的就是在服务器和客户端之间实现成功的“类似对话框”的消息交换。问题是两个端点中的一个端点在一段时间后将失去同步。这导致终端运行状态,双方都试图通过执行send
或recv
的阻塞调用来暂停执行,这当然是不行的。
我缺少任何操作吗?
我正在使用以下代码(Python3)创建套接字
对于服务器:
#!/usr/bin/python3
#server.py
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((str(address_port[0]), int(address_port[1])))
serversocket.listen()
clientsocket, addr = serversocket.accept()
msg_rcv = clientsocket.recv(1024) # recv foo
clientsocket.send("foo".encode('ascii')) # send bar
msg_rcv = clientsocket.recv(1024) # recv foobar
clientsocket.send("foo".encode('ascii')) # send barfoo
#etc...
对于客户:
#!/usr/bin/python3
#client.py
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect((host, port))
clientsocket.send("foo".encode('ascii')) # send foo
msg_rcv = clientsocket.recv(1024) # recv bar
clientsocket.send("foobar".encode('ascii')) # send foobar
msg_rcv = clientsocket.recv(1024) # recv barfoo
任何帮助将不胜感激。