【发布时间】:2021-06-24 01:36:06
【问题描述】:
我正在使用 Networkstream[] ns = new NetworkStream[10];保存流,每个客户端一个。 当客户端没有返回 keepalive 响应时,服务器运行以下代码:
connectedClientsCount -= 1;
connectedClientsStreams[i].Dispose();
connectedClientsStreams[i] = new NetworkStream[i]; //Issue here
connectedClients[i].Close();
connectedClients[i] = new TcpClient(); //no issue
arrKeepAlive[i, 0] = 0;
arrKeepAlive[i, 1] = 0;
尝试将 connectedClientsStreams[i] 分配给新的网络流实例时,我收到此错误:
无法将类型“System.Net.Sockets.NetworkStream[]”隐式转换为“System.Net.Sockets.NetworkStream”
其中一个答案建议我使用 IPA 和端口等参数初始化一个新的网络流,这在客户端/服务器架构中对我来说没有逻辑意义。作为服务器,永远不会手头有这些信息。
进一步的描述应该防止进一步的误解。
客户端连接到服务器,服务器将连接的客户端套接字添加到上述数组中,网络流在运行时都在一个单独的数组中初始化,两个数组的索引与每个客户端相关,在客户端断开关联数据时因为所述客户端将从两个数组中删除,而无需重新初始化或刷新相关索引,新客户端无法使用这些索引。
所以我的理解是我处置/关闭了 2 个数组中引用的现有网络流和套接字,然后重新初始化它们,以便它们为任何未知的未来连接做好准备。
我已经有一种感觉,Tom 想要客观的 SE 点,而不是为误解/写得不好的问题提供解决方案/答案。很抱歉未能提出一个符合每个人理解的问题。
【问题讨论】:
标签: c# arrays type-conversion initialization syntax-error