|
在完整端口的 SO_RECEIVE 这里,当接收到 数据时候,我就直接 PostSend 发给原客户。
bool PostSend (......)
{
DWORD dwSend = 0;
IOCP_OVER_DATA* pOverData = new IOCP_OVER_DATA;
pOverData->m_Socket = (*it)->m_Socket;
pOverData->operation = SO_SEND;
pOverData->wsaBuf.buf = pOverData->szBuffer;
pOverData->wsaBuf.len = iLen;
int iRet = WSASend(
pOverData->m_Socket,
&pOverData->wsaBuf,
1,
&dwSend,
0,
&pOverData->over,
NULL);
}
之后后面加上 这个。
int iRet = WSARecv(
pOverlapped->m_Socket,
&pOverlapped->wsaBuf,
1,
&dwBytesRecv,
&dwFlags,
&pOverlapped->over,
NULL);
发送是怎么写的
之后在
case SO_SEND:
delete pOverlapped; 删除了。
我做了一个测试,我开10条线程,连续的链接 发送数据 再关闭。就这样循环。
不知道为什么内存一直在缓慢的增加。
但是如果我把 SO_RECEIVE 的PostSend给注释掉的话,就不会增加了,这是为什么?
是不是说,不能在 SO_RECEIVE 里面直接发送给原客户端?
|
上一篇: 要如何调出这个部件出来,我的2013根本调不出这个东西来,谢谢下一篇: 实用C++的第21课作业求解!
|