鱼C论坛

 找回密码
 立即注册
查看: 1666|回复: 2

socket绑定本机所有ip

[复制链接]
发表于 2022-7-1 13:40:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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再来改程序,凑合一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-1 19:14:20 | 显示全部楼层
一个程序开多个线程同时工作不就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-2 15:58:46 | 显示全部楼层
s.bind(('0.0.0.0', port))
4个0代表所有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表