0
好吧,所以我似乎无法获得一个UDP端口绑定到任何接口,我试过wlan0/eth0 /'0.0.0.0'/ localhost等,当使用wlan0作为我的界面我没有错误,但当我运行netstat - 没有任何东西在港口列出。这应该很简单,对吧?无法获取UDP端口绑定到任何接口,我在哪里出错?
def bind_udp_socket():
if args.p < 1024 and os.getuid() != 0:
print 'Cannot bind to privileged ports, run as root'
exit(1)
if args.v: print 'Binding to %s on UDP port %d' % (interface, args.p)
try:
s = socket.socket(socket.AF_PACKET, socket.SOCK_DGRAM)
except socket.error, err:
print 'failed to create socket:', err
return 1
try:
#print type(interface) # debug
s.bind((interface, args.p))
except socket.error, err:
print 'failed to bind to socket:', err
return 1
if args.v: print 'Socket bind complete'
print 'Receiving data...\n'
while True:
data, addr = s.recvfrom(65535) # buffer size is 64 kilobytes
if args.v: print data
return 0
args.p是int类型顺便说一句 我跑不同的服务器(不同的OS)和同样的问题上的代码。
即时通讯不使用Windows。 netstat -unl对于linux系统来说是正确的,以显示所有监听的udp端口。 – tozhan
当你发现异常并打印它时,你会得到什么错误?只是为了澄清;您确定要绑定数据包套接字(AF_PACKET)(http://man7.org/linux/man-pages/man7/packet.7.html)。大多数时候地址系列应该是IPv4(socket.AF_INET)。至于接口尝试s.bind((“”,UDP_PORT)),“”绑定到接收端的所有本地接口。希望有所帮助。 –
ahh是的,它应该是AF_INET。谢谢! – tozhan