如何解决大量JAVA客户端Socket关闭时TIME
这种应该是服务端主动关闭连接引起的,如果客户端主动关闭就没有问题了。 可以考虑把服务端的socket的Time wait设置的很小,来减轻这个问题。
socket.setSoLinger(true, 0); 这个方法不可行的话很可能使用不当或者报错了。可以看看socket.close()是不是报错了。
要解决TIME_WAIT状态过多的问题,先来研究下TIME_WAIT状态的产生,下面是TCP连接断开时的四次挥手状态转换图,说明一点,途中显示的是客户端主动断开连接,tcp连接也可以由服务器端主动断开连接。
Java多线程Socket的关闭问题
1、你这获取完数据就把socket关闭掉了,应该方才trycatch后面的finally里面 类似这样的 try{ //…}catch(Exception e){ //。。
2、所以要用长连接啊。客户端端口关闭后需要在close_wait状态等待1-2分钟才会彻底关闭,具体看操作系统的设置,一般默认2分钟。详细TCP状态转换可以参考TCP协议。
3、两种办法,1)客户端关闭前 先往服务端写一段特定的信息,服务端捕捉后就把该连接关闭。 这样关闭客户端也不会出错。
java如何关闭socket连接
所以要用长连接啊。客户端端口关闭后需要在close_wait状态等待1-2分钟才会彻底关闭,具体看操作系统的设置,一般默认2分钟。详细TCP状态转换可以参考TCP协议。
你可以把inputStream和outputStream设置为成员变量,然后写一个方法用来关闭流就好了,又或者通过System.exit(0)关掉当前客户端线程。当然,你也可以直接通过工具直接把客户端关了。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置窗体为默认关闭么。再点关闭就能关进程了。你的 se 是不是等于NULL啊。你写成 if(se!=null){ se.close();} 再试试。不行的话。
还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。
你这获取完数据就把socket关闭掉了,应该方才trycatch后面的finally里面 类似这样的 try{ //…}catch(Exception e){ //。。