我想写一个java udp 广播程序
就是客户端每隔200毫秒广播一次
服务端专门接受客户端的广播请求,然后记录下来客户端的ip地址,请问怎么做???

解决方案 »

  1.   

    服务端在指定端口接收数据,当你能够读取到客户端的数据时,说明一次数据报传输完毕,可以得到对方的IP地址,Datapacket对此提供了支持。
      

  2.   

    巧了,我们的cluster就是这么实现的。 200毫秒的那个做心跳
    你说的怎么做是啥意思?整体实现么? 大概就这样:
    1、准备
       首先客户端和服务端要协商好一个端口,用写死的也好,用配置文件也好,用命令行参数也好,反正是要一致
    2、客户端
       建立一个线程,循环执行,向指定端口发送你的消息就好了,发完了sleep(200)
       发送的时候,看你的应用了,我们是cluster,有多个client和多个server,所以我们用广播,就是注意IP=255.255.255.255, setBroadCast(true)
    3、服务端
       至少建立一个线程,在指定端口上监听,收到的是DiogramPackage,它里面有接口可以取remoteAddress,取出来放到一个list或者set或者HashMap或者你自定义的数据结构里,备用。
       如果有心跳要求,还要一个timeout或者叫watchdog线程,定时遍历你存放收到的客户端的地址的数据结构,超时的就执行一些超时要做的事情,然后把数据清了代码就比较多了,但是都比较基础,不贴了