War*_* P 5
在您的LAN上枚举完整的IP地址列表是不可能的,至少不是原始TCPIP级别,这是您最初要求的(IP地址列表).然后,您更新了问题,询问是否向所有连接的计算机发送消息.上面有一条评论建议使用NETSTAT信息来执行此操作,但我不确定这是否是您想要做的可靠解决方案.
原因#1为什么难以枚举IP是因为许多连接的计算机根本不会响应任何事情,包括Ping.第二个问题是,如果要枚举当前段中的计算机,则必须向所有本地地址广播,这将花费很长时间,并且不完整,因为您的局域网可能可能有多组IP地址,可能在几个不同的私有IP子网上,以及一个或多个public-ip子网.
如果您正在制作游戏,并且您编写了基于TCP的游戏服务器,则您的游戏服务器会知道当前连接到服务器的人员,您应该能够通过活动会话.对于Indy,ICS,Synapse或您用于编写TCP/IP或UDP游戏协议服务器代码的任何其他库,执行此操作的代码将有所不同.您可以使用UDP广播消息,但这可能不是某些游戏系统的正确解决方案.想象一下,您在同一台计算机上运行两台服务器,并且每台服务器都连接到每台服务器.面向连接的解决方案更加强大.您的客户端可能仍然使用UDP并可能轮询它们所连接的服务器,并通过协议中的标志接收事件通知.这比尝试多播或广播到LAN要强大得多.
但是,如果您坚持认为,Synapse确实支持广播语法:
socket := TUDPBlockSocket.create;
socket.enablebroadcast(true);
socket.Connect('255.255.255.255', '12345')
socket.SendBufferTo(@DATARECORD, SIZEOF(DATARECORD));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |