2017-04-07 9 views
0

私はC#でソケットを作成し、それをサーバに接続すると、サーバでconnectinoを実行しようとするプログラムのスレッドを作成すると、サーバは2つの接続を同じ場所または唯一のものから見ますか1?C#ソケットダブル接続?

コードはこのような何か(ダブル接続ソケット)になります。

IPHostEntry ipHostInfo = Dns.GetHostEntry("127.0.0.1"); 
     IPAddress ipAddress = ipHostInfo.AddressList[0]; 
     IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000); 
     Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     sender.ReceiveTimeout = 5000; 
     sender.Connect(remoteEP); 

をして、私はこのコードの下になければなりません:

Thread thread = new Thread(new ThreadStart(doubleconnect)); 
      thread.Start(); 
public static void doubleconnect() 
    { 
     try 
     { 
      sender.Connect(remoteEP); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

私が上であるため、この質問を持っています私たちはサーバーに接続するコードの最初の部分ですが、接続を閉じないでください。スレッドを作成して再接続すると、サーバーは同じクライアントから2つの接続として認識されます。

サーバーにはこれと2つの接続か1つの接続しか表示されませんか?

答えて

1

短い答え:いいえ。

あなたは同じSocketに二回Connectを呼んでいます。私はdocumentationに見えたが、あなたはそれを行う場合には、その動作については何も言わないので、私は2つのことが起こる可能性が数える:

  1. あなたは二Connect(おそらくSocketException
  2. 何も上の例外を取得します。ソケットは既に接続されているので、2番目のConnectコールを通過します。

しかし、試してみてどうしたらいいでしょうか?

+0

したがって、各ソケットは新しい接続を表しますか? - サーバーに2つの接続を表示させるには2つのソケットが必要ですか? – jeyejow

+0

はい。ソケットは実際の(物理的な)ソケットとまったく同じです。 –

+0

!切る – jeyejow