我正在尝试通过UDP点对点发送数据(循环回到第二个NIC),但是它不起作用。 (这将是一种单向连接,这就是为什么我使用UDP的原因)。我正在使用Python 2.6.6。这是代码(来自:sending/receiving file UDP in python):
v-text-field
#!/usr/bin/env python
from socket import *
import sys
s = socket(AF_INET,SOCK_DGRAM)
s.bind(("192.168.0.1",9999))
host = "192.168.100.1"
port = 9999
buf =1024
addr = (host,port)
file_name=sys.argv[1]
s.sendto(file_name,addr)
f=open(file_name,"rb")
data = f.read(buf)
while (data):
if(s.sendto(data,addr)):
#print "sending ..."
data = f.read(buf)
s.close()
f.close()
我可以使用#!/usr/bin/env python
from socket import *
import sys
import select
host="192.168.100.1" #second nic
port = 9999
s = socket(AF_INET,SOCK_DGRAM)
s.bind((host,port))
addr = (host,port)
buf=1024
data,addr = s.recvfrom(buf)
print "Received File:",data.strip()
f = open(data.strip(),'wb')
data,addr = s.recvfrom(buf)
try:
while(data):
f.write(data)
s.settimeout(2)
data,addr = s.recvfrom(buf)
except timeout:
f.close()
s.close()
print "File Downloaded"
看到两个界面。 ifconfig
是eth0
,而192.168.0.1
是eth1
。如果尝试使用192.168.100.1
,则会看到在ping -I eth0 192.168.100.1
发送并在eth0
接收到的数据包。这似乎可以确认界面正常工作。但是,如果我运行上述python脚本,则在任何一个接口上都看不到任何数据包正在发送或接收。
答案 0 :(得分:0)
我认为您的代码中的IP错误。
host =“ 192.0.100.1” #second nic
您的描述说IP为192.168.100.1和192.168.0.1