用一个class包装一下好了,本来是一个ServerSocket完成读,写现在你包装一层,包装的class内部读的时候用一个,写的时候用另外一个

解决方案 »

  1.   

    数据包的IP和端口都有,你还需要标示别的什么?
    发线程直接发到相应的IP和端口就可以了。
    多线程一般需要队列,比如:
    +----------+  +---------+ fetch  +---------------+  +---------+  +--------+
    | Receiver |->| R Queue |------->| HandlerThread |->| S Queue |->| Sender |
    +----------+  +---------+        +---------------+  +---------+  +--------+
      

  2.   

    可以使用管道流Pipedinputstream
    使用管道通信的方式,把所有数据都保存在内存里,不但可以获得最高的执行效率,安全的执行过程,也不用考虑线程同步的问题
      JAVA里关于管道的API有: 
      ●Java.io.PipedInputStream 
      PipldInputStream(): 
      创建新的管道输入流,且它没有关联一个管道输出流。 
      PipldInputStream(PipldOutputStream out): 
      创建新的管道输入流,且从管道输出流out中读取数据。 
      connect(PipldOutputStream out): 
      关联一个管道输出流,且这个流读取数据。 
      ●Java.io.PipedOutputStream 
      PipldOutputStream(): 
      创建新的管道输出流,且它没有关联一个管道输入流。 
      PipldOutputStream(PipldInputStream in): 
      创建新的管道输出流,并输出数据到in。 
      connect(PipldInputStream in): 
      关联一个管道输入流,并输入数据到in。
      

  3.   

    斑竹意思是有两个server端 socket A 和B. A应该读客户传来的数据,而B以来写数据给客户。 A和B 在不同的线程中,如何保证同一时刻有多个用户请求时,A和B是为同一个客户服务的。
      

  4.   

    可能我没说明白
    服务端 Listen 两个端口(在不同的线程中),客户端一个程序会同时去连接服务端,在同一台机器上同时启动多个客户端的实例,服务器如何分别出哪两个accept出来的 Socket 是同一个程序发出的请求?
      

  5.   

    <<在同一台机器上同时启动多个客户端的实例>>
    那每个客户端的端口应该不一样啊。
      

  6.   


    >>那每个客户端的端口应该不一样啊。==============================================不可能根据端口判断哪个Socket与哪个Socket是同一个程序的请求吧?