我想编一个聊天软件,不需专门的服务器,使用udp协议,软件启动的时候可以自动的将
局域网内容运行了相同的聊天软件的机器查找出来。然后通过点对点聊天。
我现在不知道那个控件可以搜索得到所有监听相同端口的机器。

解决方案 »

  1.   

    我觉得可能没有这样的控件,因为UDP协议并没有先建立连接。
    建议:
    你的聊天软件在登录时向局域网的每台机器发送一个固定的信号,而接收到这个信号的机器向发送机器反馈一个信号,这样就可以知道局域网里面运行这软件的机器了。
      

  2.   

    先谢谢楼上的,但是怎么向局域网内的每台机器发一个信息号内,还有需要定时检查机器是否在线,怎么保证程序的运行效率呢,
    我刚开始学习delphi,很多都不清楚,谢谢指教!
      

  3.   

    我也正在写类似的软件,可以这样做,就是利用UDP进行广播,然后等辉映
    至于时时检查你可以这样做,就是放一个Timer然后规定10秒广播一次就可以了
      

  4.   

    谢谢cloud_leonhart(阿萌) 的提示。
    原理上大概明白了,就是程序上不知道怎么实现。
    怎么使用udp进行广播,广播地址应该怎么设呢,每个机器都需要对外广播,
    广播地址都设为一样吗?
    谢谢!
      

  5.   

    谢谢 wxjh(苦儿) ,有原码的吧?呵呵!
      

  6.   

    有没有考虑过每台机器都广播会增加网络的负荷。大家能不能再想想好一点的方法。我是这样做的,就是读取“网上邻居”里的内容,也就是说检测在线的问题让Windows自己完成。大家看看可行不。东西是做出来啦。但好像刷新有时不准确。
      

  7.   

    我看就按:“ xmwgp(xmwgp)”的思路写吧,
      

  8.   

    我觉得也是!程序启动时广播给局域网所有机器,其他机器回应后就将其加入活动主机列表,随后再进行一对一通信。所有的程序都需要统一开放一致的端口,在程序启动时开启UDP监听并向网络上该端口发送广播。呵呵,这样的话,自己也会收到广播信息的,判断一下就是了。