我有一个处理客户端数据的方法。我现在有这样的情况:
private void HandleClientData(TcpClient c)
{
byte[] bytes = new byte[256];
string data = null;
TcpClient client = c;
c.Close();
client.ReceiveTimeout = 10000;
}现在,行:TcpClient client = c;是否会导致客户机的丢失,即使使用c创建了一个新的TcpClient。
我在某个地方读到,所有的引用都共享一个底层的socket,但是,像这样重新初始化它是否允许用户仍然发送数据,或者行:c.Close();会完全结束连接吗?
请注意:我目前没有自己测试的代码,因为它还没有编写,这个问题也将帮助我理解更多的TcpClient处理在进一步的项目。谢谢。
发布于 2020-07-07 20:31:54
TcpClient client = c;这一行不创建c的副本,它是对c是完全相同的东西的新引用。仍然只有一个TcpClient实例。
因此,当你这样做时:
c.Close();它关闭对c的引用(因此,client也是关闭的,因为它们是相同的)。
它们不仅共享相同的“套接字”,而且有两个不同的变量名,它们是完全相同的。
https://stackoverflow.com/questions/62783179
复制相似问题