C# 套接字双连接?

C# Socket double 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 个连接还是只有一个连接?

简答:否

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

  1. 你在第二个 Connect 时遇到异常(可能是 SocketException
  2. 没有。由于套接字已经连接,它刚刚通过第二个 Connect 调用。

但是,为什么不尝试一下,看看会发生什么?