一个服务程序,开了两个线程,对一个连接进行写操作(客户端登陆,服务器下发一些数据),其中一个线程要下发的数据比较大(线程1),大概几M,另一个线程大概隔段时间采集到一些数据(线程2),也要发给客户端问题出来了,客户端接收的时候,线程1发的数据只是一个大包,结果发现这个数据包里夹着线程2的数据,我设置的发送方式是阻塞的,应该是先写一个数据包,接收完一个之后,才能收第二个,为什么会混在一起呢?
期待高手回答
期待高手回答
解决方案 »
- VC 6.0软件问题
- 如何获取DC的大小?
- WISE9做的安装程序在有些机器上安装是文件名变成了问号,请问怎么解决
- 一个奇怪的dll非动态加载问题
- 求助. 关于GetBitmapBits
- 如何将vb的form界面倒入vc的dialog?
- 奇怪的现象,GetFocus()在98下运行正确,2000返回错误2,搞不懂,代码一样
- VC++ 连接不上数据库,未指定类型的错误
- 为什么我把两个相同的工程(两个人作同一个工程,作完后合并)合并到一块,前n次rebuildAll没问题...
- vc 6.0 MFC 连接SQL SERVER2008
- 有熟悉参数传递的帮忙啦。有附件实例,帮助解决了功德无量
- socket多点对一点同时传输数据问题
比如我线程1先开始的,那么在它没有写完之前,线程2应该是排队的呀,而且TCP自动分包组包,虽然线程1的包比较大,那也不能在中间插入别的包啊?确实可以设置同步,但是应该不用同步就能解决啊
就算是多线程,应该也有先后的,对吧?
比如我线程1先开始的,那么在它没有写完之前,线程2应该是排队的呀,而且TCP自动分包组包,虽然线程1的包比较大,那也不能在中间插入别的包啊? 确实可以设置同步,但是应该不用同步就能解决啊
---------确实线程1开始send的时候,貌似线程2是排队的, 但是像线程1send的数据大的话
我通常会在一个循环里send,直到全部数据发完,只调用一下send,然后给一个好大数字的len参数感觉不踏实。
如果循环里send确实是调用了几次
这个时候倒是有可能线程2 插会进来。
^_!居然是你客户端的问题