问题:
    连接到服务器A上的N个Socket,每一个socket 上送的数据byte []buffer我现在把 所有的buffer 丢给另一个Socket_Tran 转发到另一台服务器B上去.同时服务器B会有数据回来给Socket_Tran 再由 Socket_Tran 把数据丢给
对应的服务器A上的socket  ,请问大家有什么好办法.保证数据转发时不乱..本人做消费者生产者模型来做.但调试的时候还是有乱的现象..请大家请点或重新给思路.

解决方案 »

  1.   

    Socket_Tran 这里是关键,可不可以搞一个发的Socket_Tran 再搞一个收的Socket_Tran 呢?不知道你的Socket_Tran 到底是干什么的,是队列吗?还是什么东东?
      

  2.   


    现在全是异步收.问题是Socket_Tran 收到数据丢给谁的问题. Socket_Tran.BeginReceive 得到的数据可没有ID呀
      

  3.   

    Socket_Tran 只管收发数据现在接收到的数据是放了队列中去的.同时用消费模型互斥
      

  4.   

    放进个字典什么的集合里面,以SOCKET.HANDLE为键,一找就找到了啊
      

  5.   

    Socket_Tran 处理的传输数据要做一定的标示,以识别来源哪个sorket和去向哪个,这样数据就不会乱了!数据的自定义规范化
      

  6.   


    标识
    Socket_Tran 发出去的数据是 服务器A上某个socket_N 接收到的byte[] bufferServer而 Socket_Tran 接收到数据 byte[] bufferClient 后。再把bufferClient 丢给 服务器A上某个对应有socket_N,由socket_N把 bufferClient Send(bufferClient)  出去。
      

  7.   

    这是你程序解析协议的问题。BeginReceive回来的数据应该有个ID什么的。
      

  8.   

    把A上的N个Socket,上送的数据byte []buffer丢到一个队列里去(当然也可以每个socket对应一个队列)。
    然后通过Socket_Tran去对那个队列的数据进行转发/接收。(这里应该有个标识是转发,还是接收的)也可以开两个队列:一个接收,一个转发。但同时要两个Socket_Tran对应。
      

  9.   


    说明 
    现在 
    socket1 收到的数据byte []buffer1  让 Socket_Tran发出去. socket2 收到的数据byte []buffer2  让 Socket_Tran发出去.而同时:Socket_Tran 接收到 byte []bufferTran1 他要丢给谁去发的问题,是socket1 去是socket2 去发的问题。合理的的结果是这样: byte []buffer1 发出去。Socket_Tran接收到的对应的bufferTran1 由socket1 去发。如果bufferTran1=null则socket1 不发。 byte []buffer2 发出去。Socket_Tran接收到的对应的bufferTran2 由socket2 去发。如果bufferTran2=null则socket1 不发。现在没有任何手段去识别 Socket_Tran接收到的数据是谁的