Smile_Tiger 2008年08月19日
关于完成端口连续发送丢包的问题
现象:
1.每次连续发送128byte的包,接受方却只能够收到第一个包
send(data,128);
send(data,128);
send(data,128);


2.间隔延迟足够的时间,接受方收到大包
send(data,128);
Sleep(1000);
send(data,128);
Sleep(1000);
send(data,128);
Sleep(1000);
3.发送语句片断
bool CIocpModeSvr::SendMsg(SOCKET sClient,const char * pData,unsigned long Length)
{
if(sClient==INVALID_SOCKET || pData==NULL || Length==0 || !IsStart)return false;

//申请操作键
PPER_IO_OPERATION_DATA PerIoData=(PPER_IO_OPERATION_DATA) \
GlobalAlloc(GPTR,
sizeof(PER_IO_OPERATION_DATA));

//准备缓冲
unsigned long Flag=0;
DWORD SendByte;
ZeroMemory(&(PerIoData->OverLapped),sizeof(OVERLAPPED));
memcpy(PerIoData->SendBuf,pData,Length);
PerIoData->SendDataBuf.buf=PerIoData->SendBuf;
PerIoData->SendDataBuf.len=Length;
PerIoData->OperType=SEND_POSTED;
int bRet=WSASend(sClient,
&(PerIoData->SendDataBuf),
1,
&SendByte,
Flag,
&(PerIoData->OverLapped),
NULL);
if(bRet==SOCKET_ERROR && GetLastError()!=WSA_IO_PENDING)
{
char LogStr[256];
_snprintf(LogStr,256,"WSASend With Error : %d",GetLastError());
WriteLogString(LogStr);
return false;
}
else return true;

return false;
}


想请教一下原因,以及解决方案
...全文
215 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
通信技术
创建于2007-08-27

2776

社区成员

2.8w+

社区内容

通信技术相关讨论
社区公告
暂无公告