C#Socket双连接?

时间:2017-04-07 14:36:02

标签: c# sockets connection client connect

我想知道,如果我在C#中创建一个套接字并将其连接到服务器,如果我在程序中创建一个线程来尝试与服务器进行连接,那么服务器是否会看到来自同一个地方的2个连接或只有一个?

代码看起来像这样(套接字双连接):

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 个答案:

答案 0 :(得分:1)

简短回答:不。

您在同一个Connect上拨打Socket两次。我查看了documentation,但如果你这样做,它没有说明它的行为,所以我认为有两件事情可能发生:

  1. 您在第二个Connect(可能是SocketException
  2. 上获得例外
  3. 无。由于套接字已经连接,它只会通过第二次Connect调用。
  4. 但是,为什么不尝试一下,看看会发生什么?