|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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再来改程序,凑合一下吧
|
|