http://www.codeproject.com/internet/winsockiocp.asp
在这个网址下有完整代码,免费注册可得到代码,不知那位大侠用过他?
我通读了代码,写的确实不错,想直接加上我的应用。但是测试时出现了问题
我将程序收发改为问答式,服务端发,客户端收,之后客户端发,服务端收
如此往循环3000多次,在服务端报10055错,之后将客户断连接断掉,我作试验的环境
是在服务端客户端都在本机,而且仅起一个客户断连接,我的机器不是很烂,报
10055,无法分配队列和缓冲区,怎么会呢,我在内存管理上很注意,内存回收的都
很好,而且在机器运行时,看资源管理器,也没有看到该程序在内存使用上的不断
增长,且我测试的包仅200个字节?
if(! bError && bEnterRead)
{
// issue a read request
OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IORead);
ULONG ulFlags = MSG_PARTIAL; UINT nRetVal = WSARecv(lpClientContext->m_Socket,
&lpClientContext->m_wsaInBuffer,
1,
&dwIoSize,
&ulFlags,
&pOverlap->m_ol,
NULL);if ( nRetVal == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING)
{
//WSAGetLastError()等于10055
pThis->RemoveStaleClient( lpClientContext, FALSE );
}
}
在这个网址下有完整代码,免费注册可得到代码,不知那位大侠用过他?
我通读了代码,写的确实不错,想直接加上我的应用。但是测试时出现了问题
我将程序收发改为问答式,服务端发,客户端收,之后客户端发,服务端收
如此往循环3000多次,在服务端报10055错,之后将客户断连接断掉,我作试验的环境
是在服务端客户端都在本机,而且仅起一个客户断连接,我的机器不是很烂,报
10055,无法分配队列和缓冲区,怎么会呢,我在内存管理上很注意,内存回收的都
很好,而且在机器运行时,看资源管理器,也没有看到该程序在内存使用上的不断
增长,且我测试的包仅200个字节?
if(! bError && bEnterRead)
{
// issue a read request
OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IORead);
ULONG ulFlags = MSG_PARTIAL; UINT nRetVal = WSARecv(lpClientContext->m_Socket,
&lpClientContext->m_wsaInBuffer,
1,
&dwIoSize,
&ulFlags,
&pOverlap->m_ol,
NULL);if ( nRetVal == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING)
{
//WSAGetLastError()等于10055
pThis->RemoveStaleClient( lpClientContext, FALSE );
}
}
解决方案 »
- 谁给推荐个好用的编辑器
- CDialogBar中编辑控件EDIT, 不能响应Ctrl+V的复制,如何解决啊?
- 如何实现选中不同radio box,对话框显示不同控件
- 如何更改MDI主窗口标题?在线等,一解决马上结贴
- 请大家帮忙看,这样到底有没有内存泄露!!帮忙啊!小弟百思不得其解啊!!
- 高分求救 Epson TM-T88III型票据打印机打印问题
- 如何在windows上实现server/client模式?
- InstallShield 问题,请进
- 从网上下载的俄罗斯方块代码应该怎么看??
- 如何获取outlook的pst文件的默认路径
- 各位兄弟对不起,说好两天以后结帐的,结果有点私事,拖到今天,再开个贴子,回报各们兄弟们
- 大家好,怎样使installshield6.22打包的安装程序,在卸载之前执行一个命令如:regservice.exe -unreg,谢谢!
OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IORead);
有地方delete吗?
如果有装sdk,在X:\program files\Microsoft SDK\Samples\netds\WinSock\iocp\下有个IocpServer.Cpp和IocpServerex.Cpp的例子程序。