完成端口 UDP的问题
完成端口完成UDP的问题,我只是刚接触这一块。之前根据TCP的那个完成端口写了一个UDP的,相关的地址应该是对的,只是断点时,对数据进行接收的时候出现了问题。由于HEAPALLOC操作,内存一直增大,但是没有进入到完成端口绑定后的进程。TCP在绑定端口前需要ACCEPT,但是UDP不需要啊,这一块有写错的吗?或者谁有完成端口比较简单的例子呢,可以发一个吗?
//将端口与目前的完成端口绑定在一起。
CreateIoCompletionPort((HANDLE)IOCPSocket, CompletionPort, (DWORD)sClient, 0);
// Launch an asynchronous operation for new arrived connection
lpPerIOData = (LPPER_IO_OPERATION_DATA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(PER_IO_OPERATION_DATA));
lpPerIOData->Buffer.len = MAX_PACKBUFFER_SIZE;
lpPerIOData->Buffer.buf = lpPerIOData->szMessage;
lpPerIOData->OperationType = RECV_POSTED;
int x=WSARecvFrom(IOCPSocket,&lpPerIOData->Buffer,1,&lpPerIOData->NumberOfBytesRecvd,&lpPerIOData->Flags,&client,&fromlength,&lpPerIOData->overlap,NULL);
udp 完成端口 内存
[解决办法]
IOCP是为了处理连接s的,UDP没有长连接,没必要用IOCP!
你连IOCP是为了解决什么问题的都没有想清楚!
[解决办法]
UDP真的没必要使用IOCP;不要将简单的问题搞复杂了;
[解决办法]
给你几个课题思考:
1、连接(/TCP)和非连接(/UDP)的关系/联系
2、按照C/S结构,写个验证测试程序系统,譬如两个客户端连一个服务端。这个验证测试系统,UDP和TCP分别写一套。做比较。
:D