Здравствуйте, B0FEE664, Вы писали:
BFE>Вопрос, что будет если во время работы происходит переконфигурирование сети, например командами: BFE>ifconfig eth0 down BFE>... BFE>ifconfig eth0 up
BFE>Как корректно отследить такое из приложения?
Здравствуйте, B0FEE664, Вы писали:
BFE>Вопрос, что будет если во время работы происходит переконфигурирование сети, например командами: BFE>ifconfig eth0 down BFE>... BFE>ifconfig eth0 up
Да ничего, скорее всего, не будет. Пока интерфейс в дауне, новые соединения перестанут приходить. А потом опять начнут.
BFE>Как корректно отследить такое из приложения? Нужно ли вызывать close() ... listen()?
А что значит "корректно"? Какого именно поведения ты хочешь добиться?
Здравствуйте, Pzz, Вы писали:
BFE>>Вопрос, что будет если во время работы происходит переконфигурирование сети, например командами: Pzz>Да ничего, скорее всего, не будет. Пока интерфейс в дауне, новые соединения перестанут приходить. А потом опять начнут.
Вот сомневаюсь я...
BFE>>Как корректно отследить такое из приложения? Нужно ли вызывать close() ... listen()? Pzz>А что значит "корректно"? Какого именно поведения ты хочешь добиться?
Допустим я слушал порт на неком адресе и интерфейсе...
Если этот интерфейс "загасили", то хотелось бы прописать в лог, что вот с такого-то момента входящее соединение было невозможно.
Если интерфейсу поменяли адрес, то хотелось бы об этом узнать и не пытаться дальше слушать порт на не верном адресе.
Здравствуйте, B0FEE664, Вы писали:
BFE>>>Вопрос, что будет если во время работы происходит переконфигурирование сети, например командами: Pzz>>Да ничего, скорее всего, не будет. Пока интерфейс в дауне, новые соединения перестанут приходить. А потом опять начнут. BFE>Вот сомневаюсь я...
Проверь.
BFE>Допустим я слушал порт на неком адресе и интерфейсе... BFE>Если этот интерфейс "загасили", то хотелось бы прописать в лог, что вот с такого-то момента входящее соединение было невозможно. BFE>Если интерфейсу поменяли адрес, то хотелось бы об этом узнать и не пытаться дальше слушать порт на не верном адресе.
А тебе обязательно зачем-то надо слушать на определенном интерфейсе? Можно ведь по нулевому адресу слушать, что означает, слушать на всех интерфейсах (вернее, на всех локальных адресах).
BFE>Если этот интерфейс "загасили", то хотелось бы прописать в лог, что вот с такого-то момента входящее соединение было невозможно. BFE>Если интерфейсу поменяли адрес, то хотелось бы об этом узнать и не пытаться дальше слушать порт на не верном адресе.
Qt такого не предоставляет. Разве что ошибку выдаст.
Здравствуйте, Marty, Вы писали:
BFE>>Как корректно отследить такое из приложения? Нужно ли вызывать close() ... listen()? M>А сокеты вообще такое могут отследить? Ошибку, там, какую-то вернуть?
Здравствуйте, Pzz, Вы писали:
Pzz>>>Да ничего, скорее всего, не будет. Пока интерфейс в дауне, новые соединения перестанут приходить. А потом опять начнут. BFE>>Вот сомневаюсь я... Pzz>Проверь.
Проверить то я могу, но проверка займёт два-три дня...
Собственно проверкой заниматься не охота, но раз никто не знает — придётся.
Pzz>А тебе обязательно зачем-то надо слушать на определенном интерфейсе? Можно ведь по нулевому адресу слушать, что означает, слушать на всех интерфейсах (вернее, на всех локальных адресах)
Мне надо слушать на локальном адресе, чтобы извне не было видно.
Здравствуйте, B0FEE664, Вы писали:
Pzz>>А тебе обязательно зачем-то надо слушать на определенном интерфейсе? Можно ведь по нулевому адресу слушать, что означает, слушать на всех интерфейсах (вернее, на всех локальных адресах) BFE>Мне надо слушать на локальном адресе, чтобы извне не было видно.
Мониторить состояние интерфейсов можно, но муторно.
У тебя что за ОСь? Можно сделать по-другому, после accept() говорить getpeerbyname(), проверять его локальность, и если не, сразу бросать соединение с SO_LINGER == 0. С внешней стороны будет не особо-то и различимо.
Могу подстазать, как проверить локальность адреса в зависимости от ОСи.
Здравствуйте, B0FEE664, Вы писали:
BFE>>>Как корректно отследить такое из приложения? Нужно ли вызывать close() ... listen()? M>>А сокеты вообще такое могут отследить? Ошибку, там, какую-то вернуть?
BFE>Вопрос не про сокеты. Вопрос про QTcpServer.
Если сокеты емуют в ошибку, то, по идее, Qt должно её обрабатывать