2012-04-12 37 views
2

2つの別々のIPアドレスで構成されたマシンに2枚のインターネットカードがあります。どちらのIPアドレスも同じネットワークの一部です。私はそれがこれらのIPアドレスの1つに特有のソケットを作成すると言っているのでしょうか?ソケットと複数のIPアドレス

UPDATE:

は、ここに私の状況です:

私は192.168.0.10にあるハードウェアデバイスを持っています。 udpを介して(192.168.0.11、50000)と(192.168.0.12、50000)に通信します。ハードウェアデバイスは、(192.168.0.10、49000)と(192.168.0.10、49001)の2つのポートを介してこれを行います。

通信でログと操作ができるようにスクリプトを使用してポート(192.168.0.11、50000)と(192.168.0.12、50000)を作成し、データを2つのシミュレータに転送しますハードウェア

実際、私のスクリプトはハードウェアをテストする目的でデータを記録したり破損したりする「真ん中の人」です。ここで

は私のスクリプトのためのソケットインタフェースです:

IP 1 - Channel 1 

External_socket = (192.168.0.10, 49000) ** Hardware 
External_side_socket = (192.168.0.11, 50000) ** Script 
Simulator_side_socket = (192.168.0.11, 50001) ** Script 
Simulator_socket = (192.168.0.11, 50002) ** Simulator 

IP2 - Channel 2 

External_socket = (192.168.0.10, 49001) ** Hardware 
External_side_socket = (192.168.0.12, 50000) ** Script 
Simulator_side_socket = (192.168.0.12, 50001) ** Script 
Simulator_socket = (192.168.0.12, 60002) ** Simulator 

そして、これは期待どおりに動作し、正しいデータを各チャンネル毎に記録されます。 192.168.0.12のIPアドレスを維持しながら

1)私は、60002から50002まで二シミュレータの設定ファイルを変更します。私は2つの簡単な変更を加えた場合

しかし、それは動作を停止します。

2)私のスクリプトでは、IP2についても60002を50002に変更しました。

突然、第2のチャネルからのデータが第1のシミュレータに到着している。どうすればいいの? .netはIPAnyであり、シミュレータがこれをどういうわけか使っていて、設定ファイルのIPアドレスを無視しているのだろうかと思います。それがここの問題かもしれないと思いますか?

おかげで、

バリー

答えて

0

私はそれが正しいっぽいだと思います。ステートメントで使用する抽象レベルに応じて選択します。

ソケットを作成すると、IPアドレスにバインドされません。上のWikipediaの記事を見るとBerkeley socketあなたが最初のものはドメインソケットタイプ、および家族を述べソケット(socket())を作成することを参照してください。次に、ソケットはアドレス(10.0.0.1など)にバインドされます(bind())。次に、ソケットを使用する目的に応じて、listen、accept、またはconnectに設定できます。

Localhostには、他のデバイスと同じIPアドレス、つまり127.0.0.1があります。ソケットを作成し、それを127.0.0.1にバインドします。そのソケットは、通信できる他のソケットとして機能します。

また、Network SocketのWikipediaの記事を読むこともできます。

0

INADDR_ANYを使用すると、特定のネットワークインターフェイスにバインドされないため、プログラムが実行されているIPアドレスを無視して作業することができます。

参考文献hereおよびhere

関連する問題