написание HTTP сервера. linux

Тема в разделе "WASM.NETWORKS", создана пользователем psu, 19 июн 2007.

  1. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    Необходимо написать "урезанный" HTTP сервер. Урезанность состоит в том, что возвращаться будет просто список HTTP заголовков, которые к серверу пришли ( использование - тестирование проксей )
    Код
    Код (Text):
    1. listener = socket(AF_INET, SOCK_STREAM, 0);
    2.     if( listener < 0 )
    3.     {
    4.         Error1( "create socket (%d)", errno );
    5.         return( 0 );
    6.     }
    7.  
    8.     addr.sin_family = AF_INET;
    9.     addr.sin_port = htons( Port );
    10.     addr.sin_addr.s_addr = htonl( INADDR_ANY );
    11.  
    12.     if( bind( listener, ( struct sockaddr *)&addr, sizeof( struct sockaddr_in ) ) < 0 )
    13.     {
    14.         Error2( "bind %u (%d)", Port, errno );
    15.         return( 0 );
    16.     }
    17.  
    18.     if( listen( listener, SOMAXCONN ) < 0 )
    19.     {
    20.         Error1( "listen (%d)", errno );
    21.         return( 0 );
    22.     }
    23.  
    24.     while( 1 )
    25.     {
    26.         sock = accept( listener, NULL, 0 );
    27. // общаемся с клиентом
    Коннект должен происходить по некоторому порту Port. Набираю в браузере "http://<server-host>:<Port>/" и ничего - ( Firefox не может установить соединение с сервером ). Что делаю не так?
     
  2. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    telnet localhost Port
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Код (Text):
    1.         sinLen = sizeof(sockAddr);
    2.         clientSocket = accept(servSocket, (struct sockaddr *)&sockAddr, &sinLen);
    нули в качестве параемтров не рулят у accept'a.
     
  4. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Рулят.

    "A null pointer may be specified for addr
    if the address information is not desired; in this case, addrlen is not
    used and should also be null. "

    http://www.freebsd.org/cgi/man.cgi?query=accept&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    гм, действительно, ну тонгда я пас, что здесь не работает.
     
  6. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Кстати, вполне вероятно, что причина кроется в самом Фаерфоксе, ибо с некоторых пор, например, та же "чистая" Мозилла имеет спец. настройки по безопасности, запрещающие браузеру соединяться с некоторым списком портов, выводя при этом мессаджбокс "Access to the port number given has been disabled for security reasons."(http://www.mozilla.org/projects/netlib/PortBanning.html). Так что, как было упомянуто выше: netstat -an && telnet 127.0.0.1 80