我正在尝试编写一个服务器/服务,它每秒左右在局域网上广播一条消息,有点像服务发现。
该消息需要由以下人员接收
多个客户端程序可能是
在同一台机器上或不同的机器上
机器。但可能不止
每台机器上运行一个程序
同一时间。
我正在使用 delphi 7 和 indy 9.0.18
我卡住的地方是我是否应该使用 UDP(TIdUDPClient/Server) 或 IP MultiCast (TIdIPMCastClient/Server) 或者如果它甚至可能......
我已经设法让它与每台机器一个客户端的 IP 多播一起工作,但即使在多次尝试不同的绑定..最大/最小端口等之后,我似乎找不到解决方案。
我想你正在寻找SO_REUSEADDR http://msdn.microsoft.com/en-us/library/ms740621%28VS.85%29.aspx套接字选项。在套接字上设置该选项允许多个套接字侦听同一端口。对于多播,Windows 保证消息将传递到所有套接字(否则消息只会随机地传递到一个套接字)。
您通常通过调用setsockopt 来完成此操作,但我不是Delphi 开发人员,因此我不确定您的API 是什么样的。这question https://stackoverflow.com/questions/2143531/problem-recieving-udp-packets-send-to-127-0-0-1-when-using-so-reuseaddr似乎展示了有人在 Delphi 中做类似事情的例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)