В общем у интерфейса несколько IP адресов, например 10.0.0.1, 10.0.0.2 и 10.0.0.3.
Я делаю бинд на 0.0.0.0 и принимаю соединения.
Так вот, как узнать к какому именно из этих трех IP подключился клиент? Возможно ли вообще это?
Пока что как вариант думаю слушать каждый ip отдельно. Но вообще хотелось бы решить проблему в одном потоке и одним listen'ом.
Здравствуйте, glow rabbit, Вы писали:
GR>В общем у интерфейса несколько IP адресов, например 10.0.0.1, 10.0.0.2 и 10.0.0.3.
GR>Я делаю бинд на 0.0.0.0 и принимаю соединения.
GR>Так вот, как узнать к какому именно из этих трех IP подключился клиент? Возможно ли вообще это?
GR>Пока что как вариант думаю слушать каждый ip отдельно. Но вообще хотелось бы решить проблему в одном потоке и одним listen'ом.
getsockname()
А вообще лучше привязывать к трём адресам.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, sercher, Вы писали:
S>Здравствуйте, glow rabbit, Вы писали:
GR>>В общем у интерфейса несколько IP адресов, например 10.0.0.1, 10.0.0.2 и 10.0.0.3.
GR>>Я делаю бинд на 0.0.0.0 и принимаю соединения.
GR>>Так вот, как узнать к какому именно из этих трех IP подключился клиент? Возможно ли вообще это?
GR>>Пока что как вариант думаю слушать каждый ip отдельно. Но вообще хотелось бы решить проблему в одном потоке и одним listen'ом.
S> getsockname()
S> А вообще лучше привязывать к трём адресам.
В смысле создавать 3 сокета.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, sercher, Вы писали:
S>Здравствуйте, glow rabbit, Вы писали:
GR>>В общем у интерфейса несколько IP адресов, например 10.0.0.1, 10.0.0.2 и 10.0.0.3.
GR>>Я делаю бинд на 0.0.0.0 и принимаю соединения.
GR>>Так вот, как узнать к какому именно из этих трех IP подключился клиент? Возможно ли вообще это?
GR>>Пока что как вариант думаю слушать каждый ip отдельно. Но вообще хотелось бы решить проблему в одном потоке и одним listen'ом.
S> getsockname()
Я бы уточнил, что getsockname нужно вызвать для сокета, дескриптор которого вернул вызов accept. Но, думаю, это всем и так понятно

.