我的服务器端在客户端登陆的时候建立了一个和他通讯的线程,用对象流来读取客户端发来的数据:
public void run()
{
while(!s.isClosed())
{
try {
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Message m = (Message) ois.readObject();
……
……
}
}
平时运行起来是正常的,但是客户端关闭后,服务端要报异常:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:113)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at com.server.model.SerConClientThread.run(SerConClientThread.java:51)
close()什么?端口? 我是一个服务器和多个客户端连接,每个客户端连接进来的时候,为他新建一个保持通讯的连接。要怎么关闭呢?我是初学者,麻烦讲详细点
java线程关闭时会执行结束线程的方法吗
当你调用System.exit()或者通过其他方式(例如:在Spring Boot应用中使用\/shutdown端点)正常关闭应用时,Java虚拟机会尝试停止所有的非守护线程。如果线程在合理的时间内没有响应停止请求,那么Java虚拟机会使用更强硬的手段来停止它们。你可以通过在线程上调用Thread.interrupt()方法来中断线程。这将设置线程...
java Socket问题:服务器端等待客户端的请求,但是客户端连上后再关闭...
两种办法,1)客户端关闭前 先往服务端写一段特定的信息,服务端捕捉后就把该连接关闭。 这样关闭客户端也不会出错。2)用多线程来处理:1、Server创建 Socket s ; ServerSocket ss 并监听端口 run = true ; while(run) { s = ss.acept();} 2、Client 连接 Server , Server 接...
java线程如何停止
2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要...
java socket 客户端关闭,服务器端抛出java.net.SocketException: Con...
会不会是p2p的模式造成的,服务器端使用多线程模式了么?客户端发送一次消息后,是不是线程就结束了,然后关闭连接了啊
Java中如何正确而优雅的终止运行中的线程
2、使用volatile标志位 看一个简单的例子:首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行 public class MyRunnable implements Runnable { \/\/定义退出标志,true会一直执行,false会退出循环 \/\/使用volatile目的是保证可见性,一处修改了标志,处处都要去...
java web页面,关闭浏览器,让一个操作继续执行?
这要看你的程序是客户端还是服务器端 如果是客户端执行,也就是说是浏览器去执行,那关闭之后是不能继续执行了。比如一个客户端的分页,这里假设分页的效率比较低,分页执行可能需要5秒,如果在这5秒内你关闭浏览器,这个分页就没有执行成功了,这种是显而易见的情况 如果是服务器端,还要看执行完成...
...的tcp连接,如果客户端异常断开连接,服务器端如何获知,有什么方法...
这个得用java心跳处理机制。就是客户端每隔一段时间向服务器发送指定信息,如果服务器没有收到客服端发来的信息,这时服务器和客服端连接就已经断开。具体的心跳实现百度上很多。
java.net.SocketException: Software caused connection abort...
然后分配给此socket连接的线程退出,那么客户端在while(true){..}循环,读取流时便会发java.net.SocketException:Software caused connection abort: recv failed异常。已知会导致这种异常的一个场景如下:客户端和服务端建立tcp的短连接,每次客户端发送一次请求,服务端响应后关闭与客户端的连接.如果客户端在...
java中终止程序的执行
(1)让程序在一个单独的线程中运行,然后在终止时,可以用线程的终止方法来结束它。(2)退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是希望看到的情况!!!要退出Java程序...
java中socket如何让服务端一直等待,客户端每隔一段时间链接一次_百度...
1、服务端 使用ServerSocket 在确定端口之后,调用accept() 方法 。 这样 服务端就会阻塞在accept() 这里 直到有客户端请求过来 才会接着往下执行,后面你就写获取文件夹内容的具体逻辑代码 然后写入流里面 传回给客户端就可以了 2、客户端 客户端你要求每隔一段时间 有很多种方法可以实现 比如说写...