通过Python TCP Socket接收数据两次

-1 投票
1 回答
3127 浏览
提问于 2025-05-01 16:57

我正在尝试使用一个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()的时候,缓冲区里已经没有东西可以发送或接收了。

撰写回答