Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
0
// 重启接收器
bool AcceptorProxy::RestartAcceptor()
{
    if (m_Acceptor)
    {
        m_Acceptor->Stop();
        return m_Acceptor->Start(m_Ip, m_Port);
    }
    else
    {
        return CreateAcceptor();
    }
}
Пример #4
0
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;
}
Пример #5
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;
}
Пример #6
0
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");
	}
}