现在有这样的情况:A <-> B 直接socket通信,A -> B发消息时,这时能不能外加一个C服务器复制一份这个消息,复制消息的原因是想解析一下看看而已,不更改到B消息的内容,实际上就是外加一个并联,如A -> B
  -> C不改变和影响A - B 之间的连接和信息。有可能的话写个小例子,谢谢!

解决方案 »

  1.   

    你这种问题必须在A或B上做改造。
    不改造不太可能。
    最简单的是弄个代理C,让C做A的代理。也就是做个端口转发吧。
      

  2.   

    是想让C也和A通信,然后A发消息给B时,我能截获到,复制一份给自己C,其他流程不变。
      

  3.   

    socket已经荒废几年了,如果用消息的话可以解决这个问题, 生产者-〉消费者
      

  4.   

    如果不允许C丢失消息。改为A->C->B   C做代理
    如果允许。 改为A->B(TCP)  ->C(UDP)  向B发完后,在push给C一份。当然可以AC长连接,不用UDP.
      

  5.   

    当然可以了,就是相当于A发消息给2个人(B和C),将C作为A的观察者之一就可以了
    或者让C始终关注A,A每次发消息都找到C的socket,然后发一份给C
      

  6.   

     我有个想法:  你让A与B产生通信,而C只是想解析一下看看而已;  故你可以试着保持A与B的通信,其中的通信信息,保存到文件中,C可以去读取..
      

  7.   

    socket很久没用了!LZ问的是群发??
      

  8.   

    我的理解就是A同时发给B和C对么?
      

  9.   

    无论是广播还是多播都是基于UDP的。
    但是广播是限定在一个本地广播网络之内的,也对接受者的限定比较严格。
    所以采用多播比较好。
    发送者通过MulticastSocket这个发送。接受者也是通过MulticastSocket来接收,不过需要将接收者添加到接收组中。我们现在是B和C两个接收者,只要将B和C通过joinGroup添加到接收者的MulticastSocket中就可以了!
      

  10.   

    if( 可改程序A ) 

      if( 多个旁观者(比如网上游戏允许旁观) )
            采用UDP广播
        else
            A并行发B和C.至于TCP/UDP不是问题关键咯。
    }
    else
    {
        在C上整个sniffer,作IP包监控。
    }当然A-->C代理-->B也是一种玩法。
      

  11.   

    顶。。
    如果A、B都不能修改的话,那只能是A-->C代理-->B
      

  12.   

    socket通讯是管道吧,B收到后,再与C建立一socket通讯.
      

  13.   

       LZ要么这样子:     再抽出一个服务器端,任意两个主机间的通信都要经过服务器C,你就可以在服务器C上为所欲为了啊!
    服务器C起到一个转发、过滤、查看的作用,通信时可以判断一下是群发还是点对点,然后取得转发对象后转发即可,你要查看的话也不是问题了啊!
      

  14.   


    LZ的意思有些晦涩。如果你要A同时发信息给BC的话C就是改了信息也不会影响B收到的信息更提不上更改B消息的内容了,所以直接同时发信息给BC就行了。不然的话可以用类似sniffer的监听的方法让C在AB通信线路上监听吧。
      

  15.   

    用线程做处理不就行了
    在A发送给B信息的时候
    调用一个方法
    方法实现线程 去连接C的地址
    然后信息的内容做参数传递过去不久行了么
      

  16.   

    A发消息给B时拦截一下将消息同时发给C可以不