int StartEchoServer(const char* host, const char* port) { SOCKET sockfd, acceptor; struct sockaddr_in addr; int len = sizeof(addr); assert(host && port); acceptor = CreateAcceptor(host, port); if (acceptor == INVALID_SOCKET) { return -1; } for (;;) { sockfd = accept(acceptor, (struct sockaddr*)&addr, &len); if (sockfd == INVALID_SOCKET) { if (WSAGetLastError() != WSAEWOULDBLOCK) { fprintf(stderr, "accept() failed, %s.\n", LAST_ERROR_MSG); break; } } else { OnAccept(sockfd); } Sleep(1); } return 0; }
int StartEchoServer(const char* host, const char* port) { SOCKET sockfd; SOCKET acceptor = CreateAcceptor(host, atoi(port)); if (acceptor == INVALID_SOCKET) { return -1; } for (;;) { SOCKET sockfd = accept(acceptor, NULL, NULL); if (sockfd != SOCKET_ERROR) { if (OnAccept(sockfd) != 0) break; } else { if (AsynSelectLoop() != 0) break; } } return 0; }
// 重启接收器 bool AcceptorProxy::RestartAcceptor() { if (m_Acceptor) { m_Acceptor->Stop(); return m_Acceptor->Start(m_Ip, m_Port); } else { return CreateAcceptor(); } }
int StartEchoServer(const char* host, const char* port) { SOCKET acceptor = CreateAcceptor(host, atoi(port)); if (acceptor == INVALID_SOCKET) { return -1; } while (CompletionLoop(acceptor) == 0) { } return 0; }
bool CSocket::Construct(SOCKET& acceptor) { acceptor = CreateAcceptor(0, 0, 1); if (INVALID_SOCKET == acceptor) { return false; } m_client = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == m_client) { return false; } m_server = Connect(m_client, acceptor); const bool result = (INVALID_SOCKET != m_server); return result; }
void CSockets::Initialize() { m_acceptor = CreateAcceptor(0, 0, 1); Client = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == Client) { throw runtime_error("couldn't create a new client socket"); } Server = Connect(Client, m_acceptor); if (INVALID_SOCKET == Server) { throw runtime_error("couldn't connect client socket to server"); } if (!EnableNonBlockingMode(Server)) { throw runtime_error("couldn't enable non blocking mode"); } }