2017-04-07 174 views
0

我在想,如果我在C#創建一個套接字並把它連接到服務器,如果我在程序中創建一個線程來嘗試做annother connectino與服務器,將服務器看到來自同一個地方或只有2個連接一?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

簡短的回答:

您在同一Socket調用Connect兩次。我看着在documentation,但它沒有提到它的行爲,如果你這樣做,所以我認爲有兩種情況:

  1. 你上了第二Connect(可能是SocketException
  2. 沒有什麼異常。由於套接字已連接,因此只能通過第二個Connect調用。

但是,爲什麼不嘗試一下,看看會發生什麼?

+0

那麼每個套接字代表一個新的連接? - 這意味着我將不得不有兩個套接字才能讓服務器看到2個連接? – jeyejow

+0

是的。一個套接字就是這樣,就像一個真實的(物理)套接字。 –

+0

使感覺! grats – jeyejow