参数传递一个 TCPClient 对象

Parameter Pass a TCPClient Object

我有一个方法来处理客户端数据。我目前有这个:

private void HandleClientData(TcpClient c)
        {
            byte[] bytes = new byte[256];
            string data = null;

            TcpClient client = c;
            c.Close();

            client.ReceiveTimeout = 10000;

        }

现在,即使使用 c.

创建了新的 TcpClient,行:TcpClient client = c; 是否会导致客户端丢失

我在某处读到所有引用都共享一个底层 socket,但是,像这样重新初始化它允许用户仍然通过发送数据或者行:c.Close(); 完全结束连接?

请注意:我目前没有自己测试的代码,因为它还没有写,这个问题也将帮助我了解更多 TcpClient 在进一步的项目中处理.谢谢

TcpClient client = c;

这一行并没有创建 c 的副本,它是对 c 相同内容的新引用。仍然只有 1 个 TcpClient 实例。

因此,当您这样做时:

c.Close();

它关闭了对 c 的引用(因此 client 也关闭了,因为它们是同一件事)。

它们不只是共享相同的 'socket',它们是完全相同的东西,只是有两个不同的变量名。