Ich habe 3 Netzwerkschnittstellen auf meinem Rechner (eth0-2) jeder hat sein eigenes Netzwerk-Subnetz 192.168.10. , 192.168.20., 192.168.30. . Ich frage mich, wie jemand BSD-Sockets auf einen Port für eine bestimmte NIC hören, zum Beispiel auf Port 10000 für eth1 hören (192.168.20.), im Moment habe ich das scheint nur auf eth0 list/bind . Das Betriebssystem, das ich momentan benutze, ist Ubuntu, aber ich möchte, dass die Lösung auf jedem posix-System funktioniert.Bindung an eine spezifische NIC in einer posix-Art
Nebenbei: Ich entwickle meine Anwendung in C++, und würde mich über einige Anleitungen zu Netzwerkbibliotheken in C++ freuen. Ich habe mir Qt angesehen, aber die Lizenz ist nicht für die Art der Entwicklung geeignet tun.
Sie können 'getsockname()' verwenden, um die lokale Adresse zu ermitteln, die für ein Socket verwendet wurde, das von 'accept()' zurückgegeben wurde. – caf
Wie caf sagte, wenn Sie die Serveradresse für die Schaltung wissen müssen, verwenden Sie 'getsockname()'. Die Verwendung separater Abhörsockets ist in Ordnung, wenn Sie jede der Adressen kennen, die Sie hören möchten. Wenn Sie jedoch alle Schnittstellen abhören möchten, verwenden Sie besser 'IPADDR_ANY' und' getsockname() '. Je nachdem, wie der Kunde Ihnen sagt, scheint das eine rundum schlechte Idee zu sein. Sie geben dies jedoch nicht als eine Anforderung an ... – janm
Ich wusste nicht über getsockname(), danke für den Vorschlag. –