日期:2014-05-20  浏览次数:20828 次

求救高人:socket通信 +多线程
a:客户端  
b:客户端
bridge:连接客户端a,b之间的桥梁。(现在就做bridge的部分)

数据的流程;完整的数据流,每次只能作为一个整体来处理。
a-> bridge-> b(处理)-> bridge-> a

端口:
a <--1111端口---> bridge
bridge <--2222端口---> b

求告人看看实现原理。我现在在bridge中开两个线程,两个socket,分别来处理a--bridge,bridge---b之间的通信。但是两个线程同步问题解决不了啊。

------解决方案--------------------
可以同步啊
a——> b的时候
肯定是bridge接收到a的连接socket,并且接收a发送过来的信息
然后bridge再建立跟b的连接,把a的msg发送给b
所以没必要建两个线程,建一个就行了 因为两个过程是有先后顺序的
------解决方案--------------------
你的意思是不是由a到b,和由b到a,分两个线程,互不干扰?
------解决方案--------------------
brige做个类似于服务端的程序,当用111端口收到a的信息后用222转发给b,b到a类似,可以开两个线程(个人意见)
------解决方案--------------------
你的邮箱呢?我发给你一个!
------解决方案--------------------
用bridge 来监听来至A或B的消息,然后做处理发送给它们

------解决方案--------------------
ding
------解决方案--------------------
我的意见也是开一个线程。如果不能做到同步,丢祯不可避免。
另外,你如何保证每次都能把收到的数据完全处理?也就是说如果速度够快,怎么缓冲收到的微处理的数据?
因此,开两个线程本质上和开一个没区别,本身的业务流程就是顺序的。
------解决方案--------------------

------解决方案--------------------
关注中
------解决方案--------------------
我也要学习
------解决方案--------------------
你要是用UDP协议写的,数据丢失很正常,你可以用TCP协议写这个Socket的。
------解决方案--------------------
异步阻塞