2011-06-27 9 views
0

プログラムの複数のインスタンス(「ノード」)がTCPを介して互いに接続しています。C#TcpClient最初に接続する

// 1. Connect 
TcpClient connection; 

while(true){ 
    try 
    { 
     connection = new TcpClient("localhost", ((Port)Port).Value); 
    } 
    catch(SocketException/* Exception*/) 
    { 
     continue; 
    } 

    break; 
} 

// use the connection 

これは並行して発生します。最初に接続するノードは、接続先のノードの親ノードと見なされます。スパニングツリーを生成するには、このプロパティを使用します。 TcpClientのコンストラクタを呼び出す方法は、最初に接続されたノードを確認するにはどうすればよいですか。接続に関する追加情報はどこにありますか?

テスト目的で、1台のマシン上で複数のポートを使用することに注意してください。それはインターネットを介して異なるマシン間で動作するはずです。

答えて

1

クライアントコードから判断できる方法はありません。

サーバーだけがそれを判断できます。そしてあなたが指定したツリーを構築できるのはサーバーだけです。

サーバーコードを書き込んだり、アクセスしてサーバーコードを変更した場合は、さらに役立つように投稿する必要があります。

+0

中央サーバはありません。ノード同士が接続しています。具体的には、TCP接続プロセスから追加情報を取得する必要があります。どのノードが最初に接続を開始したかを示します。 – Maarten

+1

ああ、しかし、* central *サーバーはありませんが、インスタンスには他のインスタンスが接続できるようにサーバーコードが必要です。このため、インスタンスごとに異なるポートを設定する必要があります。ルートの意志は、サーバーを見つけることができない人などです。 –

関連する問題