На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Проблема с INADDR_ANY... , ...при написании сервера
    Как я понял INADDR_ANY заставляет вставать сервер на все порты всех IP адресов данного сервера (сори за каламбур в первом случае сервер - прога, во втором - физически :-),
    а можно ли сделать как нибудь, чтобы сервер вставал на данный порт на все IP кроме например одного, на котором на этом порту будет крутиться что-то другое?
    Или может быть можно как-нибудь выбирать IP которые должен слушать данный сервер?

    Спасибо.
      можется все таки номер порта этого "другого" поменять? будет проще - это точно. А с другой
      стороны: у твоей машины много i.p. шников? Больше 2-х? Если 2, то можно вместо
      INADDR_ANY просто руками прописать i.p. твоего сервера. НАверное, так.
        Другой порт никак не канает, так как пишу специализированый www cервер и порт должен быть 80, айпей он должен слушать несколько, однако на одном IP должен крутиться стандартный apache. У апача кстати как-то же реализуеться возможность висеть на разных IP адресах при запуске его одного, вот было бы интересно как это реализуеться?
          Цитата
          Гость Mihail, 29.01.04, 05:44
          Как я понял INADDR_ANY заставляет вставать сервер на все порты всех IP адресов данного сервера

          На все интерфейсы, но не на все порты, а на конкретный.

          Цитата
          Гость Mihail, 29.01.04, 05:44
          а можно ли сделать как нибудь, чтобы сервер вставал на данный порт на все IP кроме например одного, на котором на этом порту будет крутиться что-то другое

          Определяешь айпишники всех сетевых интерфейсов компа, и вместо INADDR_ANY подставляешь нужный тебе. В этом случае, если у тебя, допустим, 3 интерфейса, а ты хочешь открыть порт только на 2-х, то открывать придется 2 разных сокета.
          Сообщение отредактировано: Uncle_Bob -
            2 разных сокета, но сервер то будет один. :rolleyes:
            что бы 2 раза код не писать, то лучше сделать свой класс MyServerSocket, который и будет все обрабатывать, и т.п.
            И все таки: неужели у тебя и вправду больше 2-х i.p. шников?
            Сообщение отредактировано: AQL -
              2 раза код не надо писать, надо просто хэндлы серверных эвентов запихать в один WSAWaitForMultipleEvents
                WSAWaitForMultipleEvents()
                опять ты за своё :D :P .
                а вдруг он под *nix-ом сидит?
                  Цитата
                  На все интерфейсы, но не на все порты, а на конкретный


                  я это и имел ввиду, просто немного стремно выразился:-)

                  Цитата
                  разных сокета, но сервер то будет один.
                  что бы 2 раза код не писать, то лучше сделать свой класс MyServerSocket, который и будет все обрабатывать, и т.п.


                  мало того, я даже не знаю сколько сокетов может понадобиться, поэтому скорее всего так делать и буду

                  [QUOTE}И все таки: неужели у тебя и вправду больше 2-х i.p. шников?[/QUOTE}
                  угу

                  Цитата
                  WSAWaitForMultipleEvents()
                  опять ты за своё .
                  а вдруг он под *nix-ом сидит?

                  именно под ним :-)


                  и все-же что то мне подсказывает что у апача это реализовано как то проще, имхо если можно слушать все интерфейсы компа, то по логике наверняка можно как то слушать все кроме каких-то, вопрос только как:-)
                    Цитата
                    Guest, 29.01.04, 19:24
                    вопрос только как

                    Не вопрос - Апач же в исходниках идет :)
                      Что то просто в исходниках копаться неохота, он здоровый :-)
                      Хотя может стоит попробовать :-)

                      В любом случае всем кто пытался помочь огромный сэнкс!
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0300 ]   [ 16 queries used ]   [ Generated: 3.05.24, 06:31 GMT ]