我有网络一个程序,采用非阻塞编程,事件方式
如果客户端在send一份数据后不执行任何操作再继续send数据,在服务器端就会把客户端发送的两份数据当作成一份处理.
如:
client:
send("abc",3);
send("def",3);server:
recv() == abcdef
size=6如果在服务器端把两个包分开呢?
如果客户端在send一份数据后不执行任何操作再继续send数据,在服务器端就会把客户端发送的两份数据当作成一份处理.
如:
client:
send("abc",3);
send("def",3);server:
recv() == abcdef
size=6如果在服务器端把两个包分开呢?
解决方案 »
- 2008生成release版EXE问题
- OpenGL纹理重复以及纹理坐标自动生成的问题
- 求解~注入的dll用FreeLibraryAndExitThread卸载时被注入程序崩溃
- SDI程序,菜单弹出后点view区域收不回去!
- opengl 问题求助,急
- 新建分割窗口视图的问题...
- 关于CListCtrl排序的问题
- 谁能告诉我如何暂停指定进程?
- 为什么总是出现 fatal error RC1004: unexpected end of file found ???
- 如何搜索sock5代理服务器?
- 高分求助!请各位高手不吝赐教!我的程序如何得到另一个程序中的一个控件的句柄,并用这个句柄操作控件?再线等!
- 如何对console程序的关闭进行控制
搞定!嘿嘿!我也不知道好的办法,帮你UP!
{
public:
DWORD m_dwLastSendTickCount;
SendData()
{
while(GetTickCount()-m_dwLastSendTickCount>50);
send();
m_dwLastSendTickCount = GetTickCount();
}
}
上面有你想要的.仔细找找吧.
不要使用SLEEP这种东东.网络上的时序问题并不是靠SLEEP可以解决的