解决方案 »

  1.   

    依我的理解,你是想使线程间可以通信。
    1,如果想使用第一种方法,除非你知道你要取的内容放在哪里,不然不可取,也不严谨!
    一般会使用ConcurrentHashMap来存储,但前提是每个key 都得不相同,不然会被覆盖。
    2,也是可以使用ConcurrentHashMap作为成员变量来实现,前提也是keY是唯一的。
      

  2.   

    1:使用全局变量来存储请求即可,但是要注意同步问题,就你的需求而言java.util.Vector也是不错的选择。
    2:session是在服务端生成的,客户端A通过session来传值不可取,可以放在http头信息里面;至于你想
    实现为了实现客户端A发送数据到服务器,服务器在将数据发送给B,可以把目的IP(即客户端B的IP)
    放在客户端A的http请求头信息里面,用IP作为key挺好的,方便直观。
      

  3.   


    谢谢兄弟。第一个问题没所谓,可以通过测试解决。主要是第二个问题。不同的终端通过服务器通信的问题。我这里发送的不是http 是长连接的tcp 流,使用的是mina2
      

  4.   


    谢谢兄弟。第一个问题没所谓,可以通过测试解决。主要是第二个问题。不同的终端通过服务器通信的问题。我这里发送的不是http 是长连接的tcp 流,使用的是mina2
    这个是一样的,你可以自己定一个头信息的标准,所有的请求过来都必须按照你定好的标准,比如发送源IP,发送目的地IP等。
      

  5.   


    谢谢兄弟。第一个问题没所谓,可以通过测试解决。主要是第二个问题。不同的终端通过服务器通信的问题。我这里发送的不是http 是长连接的tcp 流,使用的是mina2
    这个是一样的,你可以自己定一个头信息的标准,所有的请求过来都必须按照你定好的标准,比如发送源IP,发送目的地IP等。
    但是有这样的场景,终端设备每次练上来的时候都是动态获取的IP地址,也就是说每次连接上来IP地址并不是一个。不能用IP区分IP地址
      

  6.   

    第二个问题可以通过发送消息的协议来解决,每一条消息都设一个id,这样通过id来区分
      

  7.   

    第一个问题很简单吧,用BlockingQueue,然后用一个线程扫描。当队列数量大于100个的时候,从队列拉数据包出来处理就行了。
    第二个更简单了。而且你说的这种方式必须在常连接的情况下。首先你得维护一个连接池。用ConcurrentHashMap,key可以是客户端的IP+端口或其他能够代表客户端的唯一标识。value就是当前连接的IoSession。A传数据上来。拿到数据。既然是A通过服务器发给B。那肯定A要带上B的标识,通过标识获取B连接的IoSession,发送即可
      

  8.   

    1、使用mina的Filter实现缓存,类似BufferedWriteFilter,缓存多次数据再一次性调用handler,缓存时需要做并发控制。2、IOSession接口有一个方法long getId(),这个返回值ID可以用来作为session(一个session代表一个客户端)的唯一标识