两台tomcat或weblogic服务器,同一网段,有什么好的通讯手段?
每次通讯内容不超过10K,要求不能超过毫秒级,即一定要小于100毫秒。
解决立即给分,200不够再加。见:http://community.csdn.net/Expert/topic/5216/5216175.xml?temp=.3933679

解决方案 »

  1.   

    我也遇到过同样问题
    一般来说Tcp就可以了用BufferedInputStream和BufferedOutputStream。设置一下缓存大小
    你没有说数据频率多少。数据包10k不大,问题是频率多少。先讲讲我的思路
    1:Socket创建后一定要设置属性,把SendBuffer和RecBuffer调整一下。buffer小,反应速度快,但如果数据大的话就会block。建议设置为单个数据包的4倍左右即可
    TcpNoDelay一定要设置,设置成true,不然这里就要延迟100ms了
    2:传输流最好用Buffered***Stream,同样在创建时设置缓存,和socket设置的系统缓存一样大就可以了
    3:数据接收发送要分开线程,处理也要分开。将收到的数据放入LinkedList中,另外一个线程去处理
    4:socket要设置超时,两个socket之间要轮循报告状态,用这种方法来检测流是不是断开(千万不要以为TCP是可靠的,必须通过这种方式判断是不是断开了)
    5:一定要有重连动作,socket瞬间断开很可能
      

  2.   

    100毫秒好长的时间了,别小瞧了Java,RMI肯定是最合适的方式了。
      

  3.   

    RMI传输了很多不必要的信息用来组织他的数据包,数据接收到后又要反向做到方法里面去,太浪费了
      

  4.   

    java.nio中提供的新的网络通讯包据说可以提高相应速度。不过具体没用过,楼主可以参考一下
      

  5.   

    你看,对RMI有偏见了吧
    用Socket自己玩流,很有可能没有RMI的性能高的,不是我说的,是J2EE的书上说的。
    书是对很多经验的总结的。
      

  6.   

    nio的性能又多提高不知道,不过lz的要求用socket来做完全可以实现
    RMI是性能高,J2ee还说EJB性能高呢。主要看自己的控制了
      

  7.   

    请fool_leave()到下面接分http://community.csdn.net/Expert/topic/5223/5223364.xml?temp=.568722
      

  8.   

    请healer_kx(甘草)到下面接分http://community.csdn.net/Expert/topic/5223/5223368.xml?temp=.1427271