通过Python TCP Socket接收数据两次
我正在尝试使用一个Python脚本来和服务器发送和接收数据。首先,客户端会收到一条欢迎信息,并被要求输入一些内容。然后,客户端需要发送准备好的回应,完成后再保存服务器的回应。简单来说,客户端的流程就是:接收、发送、再接收。
我写的函数是这样的:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
data = s.recv(BUFFER_SIZE)
s.send(MESSAGE)
data2 = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
print "received data2:", data2
但是当程序运行时,我只收到了data的回应,而没有收到data2。
有没有办法让它先接收、再发送,然后再接收一次呢?
补充说明:服务器代码-
self.request.send("What is your name? ")
data = self.request.recv(4096).strip('\n')
self.request.send('Welcome' + data)
self.request.close()
服务器的代码在netcat中运行得很好,我现在只是想用Python来和它互动。
更新:解决方案
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
data2 = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
print "received data:", data2
1 个回答
1
data2没有打印任何东西,因为你只调用了一次.send()... 到你第二次调用.recv()的时候,缓冲区里已经没有东西可以发送或接收了。