C# Socket 双连接?

问题描述 投票:0回答:1
我想知道,如果我在 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 个连接还是只有一个连接?

c# sockets client
1个回答
1
投票
简短回答:否。

您在同一个

Connect

 上呼叫 
Socket
 两次。我查看了
文档,但如果你这样做,它没有说明它的行为,所以我认为可能会发生两件事:

    您在第二个
  1. Connect
    时遇到异常(可能是
    SocketException
  2. 什么也没有。由于套接字已经连接,因此它只会通过第二个
  3. Connect
     调用。
但是,为什么不尝试一下,看看会发生什么?

© www.soinside.com 2019 - 2024. All rights reserved.