1

Cでサーバークライアントソケットプログラムを作成しようとしています。目的は、サーバーが特定のポートでリッスンすることですが、同じIPサブネットに属するIPアドレスの範囲にわたっています。この IP サブネットは127.xxx範囲の一部です (もちろん 127.0.0.1 ではありません)。

いくつかの注意点:

  • これはストリームベースのソケットであり、Datagram ソケットではありません。
  • これはブロードキャスト アドレスではありません。
  • Unix/Linux プラットフォームでのみ C/C++ で実装

範囲内の各 IP アドレスに対して、サーバー上で複数のソケットを開きたくありません。これはスケーラブルではありません。

どんな助けでも理想的には高く評価されます。これは実現可能ですか?

4

3 に答える 3

1

ソケット API では、サブネットへのバインドは許可されていません。1 つの IP または任意のIP にバインドできます。すべての受信接続をリッスンし、適用されない接続を拒否できます。同じサーバー上のプロセス間で接続を分割する必要がある場合は、単一のリッスン ソケットを使用し、着信接続をワーカー プロセスに転送します。

于 2012-06-25T06:10:03.450 に答える
0

ファイアウォールを使用して、目的のサブネット外からの接続を防ぐことができます (これは o/s レベルです)。ソケットをプロミスキャス モードにして、特定のインターフェイスですべての接続を受け入れることができます。両方を実行できるかどうかはわかりません (ソケットをプロミスキャス モードにして、その上で iptables を実行します)。基本的には、1 つのポートだけをリッスンするパケット スニファーを構築するようなものです。

于 2012-07-08T06:05:00.180 に答える