Bind Trouble

Тема в разделе "Общие вопросы по С и С++", создана пользователем lazybiz, 22 ноя 2010.

  1. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Проблема в следующем. Вызов bind() возвращает ошибку № 10048. Никак не соображу что ему надо.
    Перепробовал всякие setsockopt с параметрами SO_REUSEADDR и SO_BROADCAST - результата ноль.
    Из MSDN: "10048 - Address already in use."
    Вчера код работал, а сегодня уже нет... %)

    Код (C++):
    #include <winsock2.h>
    #include <iostream.h>

    int main( void )
    {
    WSADATA     wsaData;

    if ( WSAStartup( MAKEWORD( 2, 2 ), &wsaData ) != 0 ) {
    cout << "WSAStartup(): error" << endl;
    return 1;
    }

    SOCKET s = socket( AF_INET, SOCK_STREAM, 0 );

    struct sockaddr_in  local;
    local.sin_family        = AF_INET;
    local.sin_port      = htons( 80 );
    local.sin_addr.s_addr   = htons( INADDR_ANY );

    if ( bind( s, (struct sockaddr *)&local, sizeof( local ) ) == SOCKET_ERROR ) {
    cout << "bind(): error " << WSAGetLastError() << endl;
    closesocket( s );
    WSACleanup();
    return 1;
    }

    //
    // ...
    //

    WSACleanup();
    return 0;
    }
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Прива Лэйз :)
    Вообще странно конечно...
    Разницы конечно нет, но htons - тут не нужен

    У меня только одно мнение что что то мешает порту, например запущенный WebServer какой-нибудь..
    Может бранмауэр....

    Вообщем кто то слушает 80ый порт помимо тебя ;-)
    100%ов давать не буду, но 95% дам - смени порт все заработает..
    А если заработает, то отлавливай того, кто слушает 80ый порт... :)
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    DarkKnight125 привет!
    Заметил что проблема актуальна только тогда, когда запущен Skype.
    Теперь вопрос в другом: как сделать так, чтобы и при Skype-е все было нормально!?

    Убрал.
    Фаервол отключен.
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Тогда отлавливай только на определенном IPшнике, как глобальные WebServerа
    Код (C++):
    local.sin_addr.s_addr = inet_addr("127.0.0.2");
    Должно помочь.. Я не думаю что скайп что то с localhostом делает...
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Нет. Так не сойдет.

    Получается что делает.
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    А в настроках скайпа есть что-нить связанное с портами???
     
  7. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Да! Есть: Использовать порты 80 и 443 в качестве входящих альтернативных.
    Убрал галку - заработало.

    Все равно мне интересно как сделать чтобы и с галкой работало. Думаю что есть какой-то способ.
     
  8. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Никак ;-)) Ты же понимаешь, если порт занят, то он занят ;-)))
    Всегда если софт работает по TCP/IP в документации прописанно что бы хотя бы нужные порты были открыты.. :)))
    Можно конечно использовать маршрутизаторы...
    Например Твой вебсервер (локально) занимает порт ну там 1543.... На маршрутизатор поступает запрос к порту 80... Маршрутизатор переправляет его в локальный порт 1543.... Только так...
     
  9. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Вот теперь я все понял) Спасиб Кнайт!
     
Загрузка...
Похожие Темы - Bind Trouble
  1. m0tion
    Ответов:
    1
    Просмотров:
    96
  2. puks
    Ответов:
    0
    Просмотров:
    2.186
  3. puks
    Ответов:
    7
    Просмотров:
    1.161

Поделиться этой страницей