流套接字如何发送/接收广播消息?

7 投票
1 回答
4090 浏览
提问于 2025-04-15 19:10

我花了两天时间在网上查找Python socket的相关资料,但还是没有找到答案。没错,我是网络编程的新手 :)

我想做一个局域网聊天系统,里面有一些特定的功能来满足我们的需求。我现在刚刚开始。我已经实现了一个客户端-服务器模型,客户端可以连接到服务器(socket.SOCK_STREAM),并且可以互相发送消息。接下来我想更进一步。我希望客户端能够通过广播的方式发现局域网中有多少其他客户端可用。

但是我失败了。是不是说socket.SOCK_STREAM类型的socket不能用于这个任务呢?如果是这样,那我还有什么选择?使用UDP数据包可以吗?我该如何监听广播消息/数据包呢?

1 个回答

5

广播是由目标地址来定义的。

比如说,如果你的IP地址是192.168.1.2,那么广播地址通常是192.168.1.255。

这和Python没有直接关系,可能在Python的文档里也找不到相关内容。你需要的是一些网络的“基础”知识,这些知识的层次要比套接字编程高很多。

*编辑

没错,你说得对,不能使用SOCK_STREAM。SOCK_STREAM是用来定义TCP通信的。你应该使用UDP来进行广播,也就是用socket.SOCK_DGRAM

撰写回答