2013-06-07 3 views
0

Я рыщут в Интернете, чтобы увидеть, как я могу запрограммировать, чтобы использовать два отдельных порта Ethernet (например, eth0 и eth1) в Linux с помощью C/C++Linux: TCP программирования сокетов через несколько портов локальных сетей

Я понимаю как использовать socket() и inet_pton, но это похоже только на один порт Ethernet.

Первый порт Ethernet автоматически отображается на 192.168.0.100, а второй 192.168.0.101

+1

Как вы хотите использовать два интерфейса? Слушайте подключения/отправьте данные/... – Joni

+0

Хорошо, теперь я хотел бы, чтобы они оба были клиентами, поэтому в основном подключайтесь к «серверу», а затем получаете данные. – user1257629

+0

Вы ищете SO_BINDTODEVICE? –

ответ

2

Две части ответа.

  1. Как правило, вам не нужно беспокоиться об использовании нескольких портов Ethernet явно. Ядро автоматически позаботится об этом. Вот как это работает. Для исходящих пакетов ядро ​​отправляет пакеты через соответствующий Ethernet-порт в зависимости от IP-адреса получателя. Таким образом, если сеть 10.0.0.0 достижима через eth0, там будет отправлен пакет. И если сеть 11.0.0.0 достижима через eth1, там будет отправлен пакет. Ядро определяет доступность сети по сетевой маске, IP-адресу и стандартным шлюзам, назначенным интерфейсу (в сочетании с таблицами маршрутизации).
  2. Для входящих пакетов, если вы привязываетесь к ЛЮБОЙ адрес, все пакеты для порта, который вы слушаете, доставляются вам. Вы также можете выбрать привязку к определенному IP-адресу, и в этом случае вам будут доставлены только пакеты, адресованные этому IP-адресу и порту.
+0

Интересно! можно ли дать небольшой фрагмент кода в качестве примера? (Я лучше всего понимаю примеры), он не должен быть сложным, просто общим. – user1257629

+1

Ну, для отправки адреса назначения указывается то, что вы указываете при подключении (TCP) или отправке (UDP). Маршруты ядра основаны на этом адресе. Для получения адреса, указанного в bind. ANY равно 0. См. Примеры здесь http://www.cs.odu.edu/~cs476/fall03/lectures/sockets.htm. Есть еще миллионы в сети. Просто найдите «примеры сокетов». Эта книга хорошая http://www.amazon.com/UNIX-Network-Programming-Richard-Stevens/dp/0139498761/ref=pd_sim_b_4. – Ziffusion

Смежные вопросы