Пример #1
0
        Listener ( Endpoint endpoint )
            : myHandle(::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))
        {
            if ( myHandle < 0 ) {
                throw (Error(errno));
            }
            ::sockaddr *const address =
                 reinterpret_cast< ::sockaddr* >(&endpoint.data());
            int status = ::bind(
                myHandle, address, sizeof(endpoint.data()));
            if ( status < 0 ) {
                close(myHandle);
                throw (Error(errno));
            }
            status = ::listen(myHandle, SOMAXCONN);
            if ( status < 0 ) {
                close(myHandle);
                throw (Error(errno));
            }
	}
Пример #2
0
 Listener::Listener ( const Endpoint& name, int backlog )
     : myHandle(::allocate())
 {
     const ::sockaddr_in& address = name.data();
     const int result = ::bind(
         handle(), (::sockaddr*)&address, sizeof(address)
         );
     if ( result == SOCKET_ERROR )
     {
         const int error = ::WSAGetLastError();
         UNCHECKED_WIN32C_ERROR(bind, error);
     }
     if ( ::listen(handle(), backlog) == SOCKET_ERROR )
     {
         const int error = ::WSAGetLastError();
         UNCHECKED_WIN32C_ERROR(listen, error);
     }
 }
Пример #3
0
 basic_endpoint(const Endpoint& endpoint)
   : impl_(endpoint.data(), endpoint.size(), endpoint.protocol().protocol())
 {
 }