【问题标题】:Python UDP Broadcast not working (not sending?)Python UDP 广播不工作(不发送?)
【发布时间】:2017-04-12 08:35:01
【问题描述】:

我需要建立广播连接。我在 python 中有 2 个不同的软件:

客户:

broadSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
broadSock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
broadData = 8000
broadSock.sendto(bytes(broadData), ('<broadcast>' ,3333))

服务器:

broadSockListe = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
broadSockListe.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
broadSockListe.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
broadSockListe.bind(('',33333))
data, address = broadSockListe.recvfrom(1024)

我尝试在 shell 中使用以下命令监听服务器端口:sudo nc -l 3333,但似乎什么都没有到达。

客户端在windows上运行,服务器在ubuntu上运行。

谢谢

【问题讨论】:

  • 好的,我解决了这个问题。端口不同:3333 vs 33333,我将客户端最后一个字符串更改为:broadSock.sendto(bytes(broadData,"utf-8"), (('',3333))) 以旧方式发送一个长 8000 字节的“事物”。

标签: python sockets udp broadcast


【解决方案1】:

试试这个:

host = '255.255.255.255'
port = 49160

# Discovery IP Conf Request
req = "\x54\x44"
crc = "\x3d\x73"
data = req+crc

# istanza il socket UDP
clie = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
clie.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
clie.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)


clie.sendto(data, (host, port))
print "tx:", data
clie.close()

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 2021-07-30
    • 2014-06-23
    • 1970-01-01
    • 2016-07-26
    • 2019-06-17
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多