在jdk1.5.0_07 之前,不能用socketChannel.close()来关闭socket,而应该使用 socket的shutdown input和output streams,socket.close()来关闭。
jdk1.5.0_07 之后的版本可以用socketChannel.close()来关闭
完整的关闭:
try {
if (socketChannel != null) {
if (!socketChannel.socket().isInputShutdown()) {
socketChannel.socket().shutdownInput();
}
if (!socketChannel.socket().isOutputShutdown()) {
socketChannel.socket().shutdownOutput();
}
if (!socketChannel.socket().isClosed()) {
socketChannel.socket().close();
}
}
if (socket != null && !socket.isClosed()) {
socket.close();
}
} catch (IOException e) {
}
分享到:
相关推荐
当Server端主动关闭Socket,它会发送一个FIN( Finish)标志来通知Client端即将结束连接。Client在接收到这个FIN后,会进入TIME_WAIT状态,等待一段时间确保Server完全关闭连接。此时,Client虽然不能向Server发送新...
当我们处理TCP连接时,必须了解如何正确地管理和关闭Socket,因为不恰当的操作可能导致一些异常情况,例如标题中提到的问题:“对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认...
然而,正确地关闭Socket连接并不像调用`close()`方法那么简单。本篇文章将深入探讨如何在Python中真正有效地关闭Socket连接,确保资源的及时释放,避免可能导致的内存泄漏或错误状态。 首先,我们来看`close()`方法...
此外,`Socket`类还提供了其他方法,如`Shutdown`用于关闭发送或接收功能,`Close`用于关闭套接字,以及`Dispose`用于释放资源。为了保持良好的编程实践,应当在不再需要Socket对象时正确关闭和清理资源。 在实际...
记得在程序结束时关闭Socket并释放资源: ```csharp socket.Shutdown(SocketShutdown.Both); socket.Close(); ``` 通过以上步骤,我们可以在C#中实现Socket的断开重连功能,并能持续循环接收服务器数据。注意在...
总结来说,这个压缩包提供的知识涵盖了C#中的Socket编程基础,特别是使用HPSocket.Net库进行TCP通信的方法,对于需要进行网络编程的开发者来说,是一个非常有价值的参考资料。通过学习和实践,开发者能够掌握高效、...
6. **关闭连接**:在需要断开连接时,调用`Winsock1.Close`方法。 7. **用户交互**:根据需求,更新UI显示连接状态、接收到的数据等信息。 通过以上步骤,一个简单的VB6.0 Socket服务端就能运行起来了。不过,实际...
可能的原因包括 socket 关闭但是 socket 号并没有置-1、write(..) on a socket that has been closed at the other end。处理方法是屏蔽 SIGPIPE 信号,避免进程被杀死。 5. EBADF:此错误码表示文件描述符无效。...
当连接完成后,不再需要的Socket不立即关闭,而是返回到池中供其他请求使用,从而减少了Socket的创建和销毁次数,降低了系统开销,提高了性能。 实现Socket池的关键在于如何有效地管理和调度Socket。这包括以下几个...
SuperSocket提供了一种简单的方法来解析和组装网络数据包,使得数据传输更加规范。 4. **AppDomain**: 应用域,SuperSocket支持在一个AppDomain中运行多个独立的服务实例,这样可以实现服务的隔离,提高系统的稳定...
5. 关闭Socket:调用Close方法关闭Socket连接。 四、Socket服务端封装 1. 绑定监听:使用Socket的Bind方法绑定到特定的IP地址和端口,然后调用Listen方法开始监听。 2. 接受连接:调用Accept方法等待并接受客户端的...
当通信完成后,客户端需要关闭Socket,释放网络资源。调用`close()`方法可实现这一点。良好的编程习惯是确保所有打开的Socket最终都能被关闭。 7. **异常处理**: Socket编程中,网络异常如连接失败、数据传输...
6. **关闭Socket**:完成通信后,双方都需要关闭Socket,释放资源。 **四、Socket API** 在编程中,我们通常使用操作系统提供的Socket API来操作Socket。例如,在Unix/Linux系统中,这些API包括socket(), bind(), ...
本文将深入探讨Android平台下的Socket通信方法与思路。 首先,理解Socket的基本概念。Socket,又称为套接字,是网络编程中的一个抽象概念,用于描述IP地址和端口号的组合,是应用层与传输层的接口。在Android中,...
4. 关闭连接:完成通信后,双方都需调用`close()`方法关闭Socket,释放资源。 SocketTool作为一款测试工具,其功能可能包括: 1. 客户端模拟:允许用户输入目标IP地址和端口号,模拟TCP或UDP连接,发送自定义的...
7. 在处理完客户端请求后,记得关闭Socket连接。 二、Android Socket客户端实现 1. Android应用中,同样需要引用java.net命名空间,使用java.net.Socket类建立客户端。 2. 创建Socket对象,指定服务器的IP地址和...
- **关闭资源**:在完成数据交换后,应关闭Socket、InputStream和OutputStream,避免资源浪费。 9. **示例代码** - Server端示例: ```java ServerSocket serverSocket = new ServerSocket(12345); Socket ...
这个类通常包含一个`start()`方法,用于启动Socket服务,以及一个`stop()`方法,用于关闭Socket服务。在`start()`方法中,我们可以调用之前创建的Socket服务Bean的启动方法。同时,为了确保Socket服务只在所有依赖的...
- 当检测到Socket连接断开时,调用`CloseSocket`方法关闭Socket。 - 读取并处理接收到的数据。 #### 代码详解 ```csharp private void OnReceive(object ob) { var key = ClientSocket.LocalEndPoint as ...
5. 关闭连接:完成通信后,服务器关闭Socket连接。 三、Socket客户端 Socket客户端是主动发起连接请求的程序。其工作流程如下: 1. 创建Socket:客户端创建Socket对象,并指定服务器的IP地址和端口号。 2. 建立连接...