【发布时间】:2014-01-17 10:40:21
【问题描述】:
使用 python2.X(适用于 Linux (++) 和 Windows (+)) 我正在尝试创建一个 python 客户端来监听地址和端口。 这些消息是由特定地址和特定端口上的应用程序发送的,但我不知道它是如何编写的。我只是确定它是正常的,它使用 UDP 协议。
所以,我编写了这段代码来接收消息:
import socket
#---socket creation
connexion = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#---Bind
try:
connexion.bind(('', 10015))
except socket.error:
print "connexion failed"
connexion.close()
sys.exit()
#---testing
while 1:
data, addr = connexion.recvfrom(1024)
print "messages : ", data
此时运行没有报错,只是代码停在了这一行:
data, addr = connexion.recvfrom(1024)
什么也没有发生...我想我没有连接并且无法接收消息,但我不知道为什么。 我尝试将地址更改为:'192.168.X.X',但它是一样的。
如果有人可以帮助我,那就太好了。我不是很舒服为什么蟒蛇... PS:对不起我的英语。
【问题讨论】:
-
它并没有停在那条线上。它正在等待大小为 1024 的缓冲区被填满。仅当缓冲区已满时才会返回。确保发送方正在发送并尝试减小缓冲区大小。
-
我认为你错了。 recvfrom 等待一个数据包,而不是 1024 字节。如果数据包较小,它将与数据包中的数据一起返回。
-
在python文档中,据说Buff size(1024)是一次接收的最大数据量,所以我像Steffen Ullrich一样思考