为什么Rust中没有TcpListener和UdpSocket的`shutdown`方法

根据该文件,TcpListenerUdpSocket会自动当值降至关闭/出斯克罗普的。但是为什么没有shutdown办法让我手动关闭它们?

https://doc.rust-lang.org/stable/std/net/struct.TcpListener.html

回答

您可以使用std::mem::drop提前删除值:

let listener = TcpListener::bind("127.0.0.1:80")?;
// ...
drop(listener);
// ...

没有shutdown方法,因为它不需要。现有的所有权系统已经足以跟踪套接字是否可用,并且无论如何您都无法关闭的套接字任何事情

  • 这不是为什么 TcpListenr 上没有关闭方法的原因,请参阅 iggy 的回答。

回答

你混淆了TcpListenerTcpStream

TCP 套接字中的“关闭”具有技术意义。发送端的关闭将 FIN 传输到远程。接收端关闭意味着任何到达的数据段都将获得 RST 响应。这些定义仅适用于数据传输状态的 TCP 连接,不适用于侦听套接字。


以上是为什么Rust中没有TcpListener和UdpSocket的`shutdown`方法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>