public bool ConnectServer(ServerInfo serverInfo) { Server server = GetServer(); Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); NetSocket connectSocketCtx = new NetSocket(this); connectSocketCtx.sock = sock; connectSocketCtx.SetSocketType(NetSocketType.CONNECT_SERVER_SOCKET); serverInfo.socketCtx = connectSocketCtx; connectSocketCtx.SetRemoteServerInfo(serverInfo); connectSocketCtx.dataTransMode = serverInfo.dataTransMode; socketMap[connectSocketCtx.GetID()] = connectSocketCtx; if (connectSocketCtx.sock == null) { connectSocketCtx.SetSocketState(SocketState.INIT_FAILD); SocketError(connectSocketCtx); //LOG4CPLUS_ERROR(log.GetInst(), "初始化Socket失败,错误代码:" << _GetLastError()); return(false); } connectSocketCtx.UpdataTimeStamp(); Packet packet = connectSocketCtx.CreatePacket(0); // 开始连接服务器 connectSocketCtx.SetSocketState(SocketState.CONNECTTING_SERVER); server.IocpPostConnect(packet); return(true); }
void SingleIocpAcceptTask(object data) { Packet packet = (Packet)data; Server server = GetServer(); NetSocket socketCtx = null; // 投递新的AcceptEx socketCtx = new NetSocket(this); socketCtx.SetSocketType(NetSocketType.LISTEN_CLIENT_SOCKET); packet.socketCtx = socketCtx; server.IocpPostAccept(packet); }
void StartInitIocpAcceptTask(object data) { Server server = GetServer(); Packet packet; NetSocket newSocketCtx; // 为AcceptEx 准备参数,然后投递AcceptEx I/O请求 for (int i = 0; i < 20; i++) { newSocketCtx = new NetSocket(this); newSocketCtx.SetSocketType(NetSocketType.LISTEN_CLIENT_SOCKET); packet = newSocketCtx.CreatePacket(0); server.IocpPostAccept(packet); } }