编程论坛

 找回密码
 立即注册
广告联系qq1031180668广告位
查看: 122|回复: 0

[python] python udp广播

[复制链接]

963

主题

1684

帖子

3257

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3257

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-6-10 23:56:04 | 显示全部楼层 |阅读模式
server:
[Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
from socket import *

dest=('<broadcast>',7788)

#255.255.255.255
#创建套接字

s=socket(AF_INET,SOCK_DGRAM)


#修改套接字设置 让它能够发送广播

s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)
sendtoData= bytes(input("输入要广播的消息:"),encoding="utf-8")

#发送广播
s.sendto(sendtoData ,dest)


print("等待对方回复")

for i in range(2):
    (buf,address)=s.recvfrom(2048)
    print("收到回复 %s:%s"%(buf.decode("utf-8"),buf))

print("已经全部回复,over")
s.close()


client1:
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
from socket import  *
s=socket(AF_INET,SOCK_DGRAM)
s.bind(("192.168.10.111",7788))
while True:
    (buf,address) = s.recvfrom(2048)
    print("收到指令 %s: %s"%(address,buf.decode("utf-8")))
    sendtoData= bytes(input("请输入回复内容:"),encoding="utf-8")
    s.sendto(sendtoData,address)
    break

s.close()

client2:

[Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
from socket import  *
s=socket(AF_INET,SOCK_DGRAM)
s.bind(("192.168.11.111",7788))
while True:
    (buf,address) = s.recvfrom(2048)
    print("收到指令 %s: %s"%(address,buf.decode("utf-8")))
    sendtoData= bytes(input("请输入回复内容:"),encoding="utf-8")
    s.sendto(sendtoData,address)
    break

s.close()


核心就是setsockopt 因为只有设置了setsockopt之后才能使用udp的广播功能。
不积跬步,无以至千里
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|小黑屋|sitemap|编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号 )

GMT+8, 2018-8-16 14:45 , Processed in 1.101570 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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