我封装的一个完成端口类
下面的是基本的使用方法struct TSession { SOCKET socket; int id; }; class myIocp:public CIOCP { public: void OnRead(void * p, char * buf, int len); void OnAccept(SOCKET socket); void OnClose(void * p); }; void myIocp::OnAccept(SOCKET socket) { TSession *s = new TSession; s->socket = socket; //这里可以对连接的session进行自己的操作,例如给id找一个唯一的值 SetIoCompletionPort(socket, s) // 使连接socket与一个自定义结构体关联 } void myIocp::OnRead(void * p, char * buf, int len) { TSession *s = (TSession *)p; send(s->socket, buf, len, 0); // 这里只是[来源:GameRes.com]简单的把收到的消息返回给客户端 ... } void myIocp::OnClose(void * p) { delete p; } myIoncp iocp; main() { ... iocp.listen(4311); // 开始监听网络端口,等待客户端连接 ... }
本主题包含附件:
sf_200562516252.zip (2388bytes) 文件由用户上传,GameRes.com无法确定其安全性,请慎重使用!
|