PYTHON - 在不知道服务器的情况下监听UDP

时间:2014-01-17 10:40:22

标签: python sockets udp listen

使用python2.X(适用于Linux(++)和Windows(+)) 我正在尝试创建一个python客户端,以收听地址和端口。 消息由特定地址和特定端口上的应用程序发送,但我不知道它是如何编写的。我确定它是功能性的,它使用UDP protocole。

所以,我写了这段代码来接收消息:

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',但它是一样的。

如果有人能帮助我,那就太好了。我为什么python不太舒服...... PS:对不起我的英语。

2 个答案:

答案 0 :(得分:1)

我发现了我的问题。我更改了IP地址(在文档中,它是192.168。 00 8. 0 15;我尝试了像正常地址(192.168.8.15)那样的零和我收到了我的留言

我也改变了代码的结构:(不知道它是否有影响)我把我的"尝试:[...]除了:[...]"在线

data, addr = connexion.recvfrom(1024)

而不是行:

connexion.bind(('', 10015))

感谢您的帮助;)

答案 1 :(得分:0)

你的代码一切都很好。您可以使用以下Python代码段验证它是否有效:

import socket
connexion = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
connexion.sendto("sending data via udp", ("localhost", 10015))

如果未显示使用此代码段发送的消息,请检查防火墙。要调查您的其他应用程序是否(或者是什么)实际生成尝试使用tcpdump或wireshark。