作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个服务器/服务,每秒左右在局域网上广播一条消息,有点像服务发现。
The message needs to be received by multiple client programs that could be on the same machine or different machines. But there could be more than one program on each machine running at the same time.
我使用的是 delphi7,以及 indy 9.0.18
我遇到的问题是我是否应该使用 UDP(TIdUDPClient/Server) 或 IP MultiCast (TIdIPMCastClient/Server) 或者甚至可能......
我已经设法让它与每台机器一个客户端的 IP 多播一起工作,但即使在多次尝试不同的绑定(bind)..最大/最小端口等之后,我似乎找不到解决方案。
最佳答案
我认为您正在寻找 SO_REUSEADDR套接字选项。在套接字上设置该选项允许多个套接字监听同一端口。对于多播,Windows 保证消息将传递到所有套接字(否则消息只会随机地传递到一个套接字)。
您通常通过调用setsockopt来完成此操作,但我不是Delphi开发人员,所以我不确定您的API是什么样的。这个question似乎展示了有人在 Delphi 中做类似事情的例子。
关于delphi - 向同一台计算机上的多个客户端发送多播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604826/
我是一名优秀的程序员,十分优秀!