一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
//从配置文件中读取服务器启动端口
Properties properties=new Properties();
try {
properties.load(TomcatServer.class.getClassLoader().getResourceAsStream(“server.properties”));
TomcatConstants.serverPost =Integer.parseInt(properties.getProperty(“port”));
TomcatConstants.characterSet=properties.getProperty(“characterSet”);
System.out.println(TomcatConstants.characterSet);
System.out.println(properties.getProperty(“characterSet”));
System.out.println(properties.getProperty(“port”));
// System.out.println(port);
//启动一个服务器等待客户端的访问
ServerSocket tomcat=new ServerSocket( TomcatConstants.serverPost);
//打印启动信息
System.out.println(“服务器启动了”+tomcat);
//接受客户端的请求
Socket client= tomcat.accept();
while (acceptFlag){
//开始接受客户端发来的信息
BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream(),“utf-8”));
System.out.println(reader.readLine());
//服务器回复消息
Writer writer=new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
writer.write("youhello"+"\n");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
}里插入代码片`
我这里 Socket client= tomcat.accept();没有放到循环中,当一个客户端访问完后,客户端程序结束,服务器程序进入下一个循环。但是没有Socket client= tomcat.accept();这时候执行BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream(),"utf-8"));
这条代码的时候,还是上一个client,然而上一个client,在下一行在这里插System.out.println(reader.readLine())
这里就会报错,因为那个client已经死了,没有输入,已经断开了和服务器的链接,所以就会出现Connection reset这个错误。