马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想用socket做一个局域网内文件传输,A电脑connectB电脑,B电脑bind自己IP。但有时候B电脑会有多个ip,A电脑程序connect的是其中一个,B电脑程序bind的是另一个,导致接收不到数据。
网上说bind(0.0.0.0),还是接收不到数据
目前的思路:
python获取本机所有ip并绑定(感觉希望较大)
python扫描局域网内所有ip并放到gui界面限制用户输入
大佬有没有什么好的思路?
A电脑程序:import socket
def send_file():
filename = 'a.txt'
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
addr = ('192.168.3.12', 7788) # B电脑其中一个ip
with open(filename, 'r') as f:
data = f.read()
data = f'{filename}///{data}'
udp.sendto(data.encode('utf-8'), addr)
udp.close()
B电脑:udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
local_addr = ('192.168.112.2', 7788) # B电脑另一个ip
udp_socket.bind(local_addr)
while True:
data_undecoded, addr = udp_socket.recvfrom(1024 * 1024 * 1024)
filename, data = data_undecoded.decode('utf-8').split('///')
with open(filename, 'w') as f:
f.write(data)
我想能不能两个电脑自动约定好bind的ip,这样最方便。但如果不行,那只能两人约定ip再来改程序,凑合一下吧
|