求教:UDP下如何取得已指定PORT的客户端信息

秋天之落叶 2024-11-27 09:01:48

一个应用设定idudpserver接收信息和idudpclient发送信息,A客户端先运行,B客户端后运行,A客户端通过UDPread可以收到B的信息(IP),但B却收不到A的IP信息,也就是如何能使后运行的客户端也知道以前运行的客户端的IP信息(广播信息没有问题)?

当然,都运行后都发一条广播,相互就都能获取IP信息,但不现实。

我通过连接数据库也能取得IP信息,但我想知道UDP下有没有类似的可以检测获取所有已运行且指定同一个(或不同)PORT的客户端IP信息?

不知道我说的是不是清楚?

...全文
224 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2024-12-01
  • 打赏
  • 举报
回复

网上的很多代码确实不太实用了。

秋天之落叶 2024-11-28
  • 打赏
  • 举报
回复

研究了几天,终于搞明白几个问题了,D10.4自带的indy真是改动很大,和以前的版本差的很多,也简单了很多。
研究网上的实例,基本上都不能正常运行,广播、多播的设置比以前简单的不能再简单了,但网上实例一个比一个复杂。
阿弥陀佛

  • 举报
回复
@秋天之落叶 网上的很多例子代码是D7时代的,D7自带的indy是indy9,而indy10重构过,和indy9差别很大。
  • 打赏
  • 举报
回复

局域网?对等连接,没有server?这样的话,可以每个客户端启动时发一条广播,但是要指定端口,也就是客户端监听广播的端口(每个客户端要监听0.0.0.0:port),消息中报告自己的IP和UDP接收端口,其他客户端收到广播之后应答,这样就互相知道其他客户端的存在了。更进一步,广播消息中可以设置若干类型的消息,诸如“我上线啦”、“我下线了”等等,以便客户端保持在线用户列表。
当然更好的方法是设置一个server,这样在广域网上也可用。

秋天之落叶 2024-11-27
  • 举报
回复
@日立奔腾浪潮微软松下联想 没有指定IP的的server,每一个客户端是server收广播client发广播,仅设置了PORT,所以导致后上线的无法获取先上线的信息(后上线的让先上线的每次都再广播一次?)。 尝试一下server,server端获取的IP信息是不是定时广播给所有的客户端?还是有上线的就广播一次?还是有别的获取的办法?
  • 举报
回复
@秋天之落叶 不用每次广播,每个客户端上线的时候广播就可以(要做完善的话下线也要广播),客户端上要有一个UDP server监听0.0.0.0:port接收广播消息,关键是你收到广播得应答呀,这样后上线的客户端就可以知道当前网络内所有已上线的客户端了。
秋天之落叶 2024-11-27
  • 举报
回复
@日立奔腾浪潮微软松下联想 多谢指教,我去试试
1条回复

5,941

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧