2012-10-03 13 views
19

Po wielu godzinach wyszukiwania w Internecie wciąż nie mogłem znaleźć odpowiedzi na mój problem.Jak powiązać gniazdo z wieloma interfejsami

Moim zadaniem jest utworzenie serwera, który akceptuje gniazda z różnej liczby interfejsów (podanych w pliku konfiguracyjnym jako eth0, eth1, etc.).

Jaki jest najprostszy sposób to zrobić? Czy istnieje sposób powiązania jednego gniazda z wieloma interfejsami? Nie znalazłem jeszcze sposobu, aby to zrobić.
Czy muszę używać INADDR_ANY i jakoś znaleźć interfejs, z którego pakiet został wysłany?

Czy istnieje inny sposób radzenia sobie z tym problemem?

Odpowiedz

28

Albo bind(2)jeden gniazdo do wszystkie interfejsy z INADDR_ANY lub tworzyć rozgałęźników i wiążą się każdy adres IP pożądanego interfejsu. W każdym razie ustaw opcję SO_REUSEADDR na gniazdach.

+0

Byłeś bardzo pomocny, dziękuję! –

+0

Możesz * akceptować * odpowiedzi tutaj, wiesz ... :) –

+0

@NikolaiNFetissov Czy mogę używać więcej niż 65K limitu połączenia, gdy używam INADDR_ANY lub muszę powiązać każdy adres IP osobno? – Etherealone

Powiązane problemy