Java Socket通信问题,200分请教! 现在有这样的情况:A <-> B 直接socket通信,A -> B发消息时,这时能不能外加一个C服务器复制一份这个消息,复制消息的原因是想解析一下看看而已,不更改到B消息的内容,实际上就是外加一个并联,如A -> B -> C不改变和影响A - B 之间的连接和信息。有可能的话写个小例子,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这种问题必须在A或B上做改造。不改造不太可能。最简单的是弄个代理C,让C做A的代理。也就是做个端口转发吧。 是想让C也和A通信,然后A发消息给B时,我能截获到,复制一份给自己C,其他流程不变。 socket已经荒废几年了,如果用消息的话可以解决这个问题, 生产者-〉消费者 如果不允许C丢失消息。改为A->C->B C做代理如果允许。 改为A->B(TCP) ->C(UDP) 向B发完后,在push给C一份。当然可以AC长连接,不用UDP. 当然可以了,就是相当于A发消息给2个人(B和C),将C作为A的观察者之一就可以了或者让C始终关注A,A每次发消息都找到C的socket,然后发一份给C 我有个想法: 你让A与B产生通信,而C只是想解析一下看看而已; 故你可以试着保持A与B的通信,其中的通信信息,保存到文件中,C可以去读取.. socket很久没用了!LZ问的是群发?? 我的理解就是A同时发给B和C对么? 无论是广播还是多播都是基于UDP的。但是广播是限定在一个本地广播网络之内的,也对接受者的限定比较严格。所以采用多播比较好。发送者通过MulticastSocket这个发送。接受者也是通过MulticastSocket来接收,不过需要将接收者添加到接收组中。我们现在是B和C两个接收者,只要将B和C通过joinGroup添加到接收者的MulticastSocket中就可以了! if( 可改程序A ) { if( 多个旁观者(比如网上游戏允许旁观) ) 采用UDP广播 else A并行发B和C.至于TCP/UDP不是问题关键咯。}else{ 在C上整个sniffer,作IP包监控。}当然A-->C代理-->B也是一种玩法。 顶。。如果A、B都不能修改的话,那只能是A-->C代理-->B socket通讯是管道吧,B收到后,再与C建立一socket通讯. LZ要么这样子: 再抽出一个服务器端,任意两个主机间的通信都要经过服务器C,你就可以在服务器C上为所欲为了啊!服务器C起到一个转发、过滤、查看的作用,通信时可以判断一下是群发还是点对点,然后取得转发对象后转发即可,你要查看的话也不是问题了啊! LZ的意思有些晦涩。如果你要A同时发信息给BC的话C就是改了信息也不会影响B收到的信息更提不上更改B消息的内容了,所以直接同时发信息给BC就行了。不然的话可以用类似sniffer的监听的方法让C在AB通信线路上监听吧。 用线程做处理不就行了在A发送给B信息的时候调用一个方法方法实现线程 去连接C的地址然后信息的内容做参数传递过去不久行了么 A发消息给B时拦截一下将消息同时发给C可以不 Struts2单独使用的情况下加入struts2-spring-plugin-2.2.3.1.jar包 会报错吗 struts2表单内的排版问题 关于hibernate去除字段数据重复的问题 询问一个关于公共模块设计模式的问题 请教关于jfreechat生成柱状图的问题? 关于web服务的问题,请各位大虾帮忙! ! ! 求助,hibernate里面的数据库语句(sql) 一个页面提交两个表单的问题 关于在MasteringEJB运行实例代码遇到的问题! ******如何将值放入xml中?在线等待******* 网站首页如何显示文章和内容简介? java 调用到其他工程类
不改造不太可能。
最简单的是弄个代理C,让C做A的代理。也就是做个端口转发吧。
如果允许。 改为A->B(TCP) ->C(UDP) 向B发完后,在push给C一份。当然可以AC长连接,不用UDP.
或者让C始终关注A,A每次发消息都找到C的socket,然后发一份给C
但是广播是限定在一个本地广播网络之内的,也对接受者的限定比较严格。
所以采用多播比较好。
发送者通过MulticastSocket这个发送。接受者也是通过MulticastSocket来接收,不过需要将接收者添加到接收组中。我们现在是B和C两个接收者,只要将B和C通过joinGroup添加到接收者的MulticastSocket中就可以了!
{
if( 多个旁观者(比如网上游戏允许旁观) )
采用UDP广播
else
A并行发B和C.至于TCP/UDP不是问题关键咯。
}
else
{
在C上整个sniffer,作IP包监控。
}当然A-->C代理-->B也是一种玩法。
如果A、B都不能修改的话,那只能是A-->C代理-->B
服务器C起到一个转发、过滤、查看的作用,通信时可以判断一下是群发还是点对点,然后取得转发对象后转发即可,你要查看的话也不是问题了啊!
LZ的意思有些晦涩。如果你要A同时发信息给BC的话C就是改了信息也不会影响B收到的信息更提不上更改B消息的内容了,所以直接同时发信息给BC就行了。不然的话可以用类似sniffer的监听的方法让C在AB通信线路上监听吧。
在A发送给B信息的时候
调用一个方法
方法实现线程 去连接C的地址
然后信息的内容做参数传递过去不久行了么