如果我在两个程序中都用udp实例一个datagramsocket来监听的话,同时运行会产生端口绑定错误,请问如何能解决这个问题实现两个程序对同一端口的监听

解决方案 »

  1.   

    Java中可能两个程序不能同时监听一个端口.
     你可在一个程序中用两个线程实现.
      

  2.   


    SO_REUSEADDR可以用在以下四种情况下。 1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启
    动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。 
    2、SO_REUSEADDR允许同一port上启动同一服务器的多个实例(多个进程)。但
    每个实例绑定的IP地址是不能相同的。在有多块网卡或用IP?Alias技术的机器可
    以测试这种情况。 
    3、SO_REUSEADDR允许单个进程绑定相同的端口到多个socket上,但每个soc
    ket绑定的ip地址不同。这和2很相似,区别请看UNPv1。 
    4、SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的
    多播,不用于TCP。 
      

  3.   

    感谢大家的发言,我找到了,是用multicastsocket有关其用法和例子,大家去搜索望站上看吧~~
      

  4.   

    实现两个程序对同一端口的监听!是不是应该是TCP/IP 机制下ServerSocket就可以啊?UDP数据报是对等机制通讯,不存在客户端之说,当然也不可以实现两个程序对同一端口的监听!!!
      

  5.   

    我觉得可以通过这种方式解决吗,通过一个程序来接收,然后通过消息中的标志再转发给其它的端口,这样对于客户端来说就不知道你的服务端是通过另外一个端口来监听的。就像同一台机器上同时装了apache和iis一样,apache开启80端口,iis开启81端口,当有人要访问iis时,直接访问80端口访问到的是apache,apache根据请求的host不一样,决定是自己处理,还是转发到81端口给iis处理,这样对于用户的ie来说,并不知道你iis使用的是81端口。