2017-04-07 145 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