在没有服务器端异常的情况下安全地关闭 Java 套接字
Closing a Java Socket safely without server side exceptions
从客户端关闭套接字连接的最安全方法是什么。先关机输入还是直接close()连接?
如果您的协议(TCP 顶部)不包含任何用于关闭会话的message/handshake,那么您必须通过关闭 TCP 连接来完成。
有两种关闭TCP连接的方法:
- graceful:使用TCP SYN,所有未送达的数据都被传输(试过)。
read()
InputStream
returns -1;
- ungraceful:使用TCP RST,所有未传送的数据都被丢弃。
InputStream
的 read()
抛出异常。
两者都可以在 java 中使用 Socket 的 close() 函数来完成。
优雅是默认值。不优雅,如果 setsolinger(true,0);
在 close() 之前完成。
关闭套接字已经关闭了输入和输出。您不需要明确执行其中任何一项。
从客户端关闭套接字连接的最安全方法是什么。先关机输入还是直接close()连接?
如果您的协议(TCP 顶部)不包含任何用于关闭会话的message/handshake,那么您必须通过关闭 TCP 连接来完成。
有两种关闭TCP连接的方法:
- graceful:使用TCP SYN,所有未送达的数据都被传输(试过)。
read()
InputStream
returns -1; - ungraceful:使用TCP RST,所有未传送的数据都被丢弃。
InputStream
的read()
抛出异常。
两者都可以在 java 中使用 Socket 的 close() 函数来完成。
优雅是默认值。不优雅,如果 setsolinger(true,0);
在 close() 之前完成。
关闭套接字已经关闭了输入和输出。您不需要明确执行其中任何一项。