通过Python TCP Socket接收数据两次

时间:2014-11-05 00:59:10

标签: python sockets tcp

我正在尝试使用从服务器发送和接收数据的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

然而,当程序运行时,我只得到数据的响应,而不是数据2。

有没有办法让它接收,发送,然后再次接收?

编辑:服务器代码 -

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 个答案:

答案 0 :(得分:1)

data2没有打印任何内容,因为你只调用了.send()一次......当我们有第二次.recv()调用时,缓冲区中没有任何东西可以发送或接收。