我正在阅读the documentation on TcpClient.Close()并注意到这一点:
调用此方法最终将导致关联的Socket关闭,并且还将关闭用于发送和接收数据的相关NetworkStream(如果已创建)。
所以,如果我错了,请纠正我,但是如果有人在Close()
上调用TcpClient
,NetworkStream
也会被关闭。
那么为什么在代码示例的末尾都调用了Close()
?
networkStream.Close();
tcpClient.Close();
只能拨打tcpClient.Close();
吗?
答案 0 :(得分:10)
回答这个问题,因为没有其他人这样做,我可以接受答案。
根据Hans的说法,调用NetworkStream.Close()是不必要的,因为TcpClient.Close()会关闭它的底层NetworkStream。
答案 1 :(得分:2)
NetworkStream和TcpClient实现IDisposable。因此,我认为最好的做法是将其打包成一个使用区块,这样您就不需要手动关闭或处理它。
答案 2 :(得分:1)
关闭客户端不会关闭流,它位于GetStream方法的文档中。 有关参考,请参阅此讨论:How to properly and completely close/reset a TcpClient connection?
答案 3 :(得分:-6)
你应该做“TcpClient.Close()”
或者,如果必须,请键入两个