Python + netcat,只有第一条消息是通过UDP发送的

时间:2017-05-12 14:07:02

标签: python udp python-2.6 netcat

我有这段代码充当UDP客户端:

import socket

data = "Hello world!"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print 'sending %s to 127.0.01:9000', data
sent = sock.sendto(data, ('127.0.0.1', 9000))
print 'sent: %s' % sent
sock.close()

以下是我的"服务器":

nc -u -l 127.0.0.1 9000

此示例有效......但只有一次。当我第一次运行我的脚本时,我将消息发送到服务器(一切都在同一台机器上完成)并查看" Hello world"被打印出来。都好。当我第二次运行我的脚本时,我没有看到第二个问候世界。

只是抬头,但由于我无法控制的情况,我使用的是Python 2.6。

这里发生了什么?是否有需要刷新的缓冲区?

当我从Python运行时环境运行代码时会发生以下情况(并且不会,netcat中的结果不会更改):

Python 2.6.6 (r266:84292, Aug  9 2016, 06:11:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> sent = sock.sendto("Hello world!", ('127.0.0.1', 9000))
>>> print sent
12
>>> sock.close()

1 个答案:

答案 0 :(得分:1)

好的。停止使用netcat来测试你的代码。 请改用此代码:

Import socket
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.bind(('127.0.0.1',9000))
print "Listening..."

while True:
    Print sock.recv(15)