关于Socket Connection reset 问题
异常信息:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at obi.youyou.utils.Chat.run(Chat.java:41)
相关代码:
public class Chat extends Thread {
private Socket socket;
public Chat(int count, Socket socket, List<Socket> socketList) {
this.socket = socket;
}
public void run() {
BufferedReader reader = null;
PrintWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String message = "";
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
//socket.setSoTimeout(10000);
while (true) {
message = reader.readLine(); ========此处为41行=======
// 接收到客户端的bye信息,客户端即将退出,并将bye写入到该客户端
if (null==message) {
SocketTest3Server.count--;
System.out.println( SocketTest3Server.count+ " null下线 " );
SocketTest3Server.socketList.remove(socket);
//new Chat(count, socket, socketList).run();
break;
}
// 向所有的客户端发送接收到信息,实现群聊
for (int i = 0; i < SocketTest3Server.socketList.size(); i++) {
writer = new PrintWriter(SocketTest3Server.socketList.get(i).getOutputStream());
String username=message.substring(0,message.indexOf("#$*"));
String messages=message.substring(message.indexOf("#$*")+3,message.length());
messages=SensitiveUtils.doFilter(messages);
writer.println("{\"talk\":{\"username\":\""+username +"\",\"time\":\""+df.format(new Date())+ "\",\"message\":\"" + messages+"\"},\"image\":[]}");
//System.out.println("{\"talk\":{\"username\":\""+username +"\",\"time\":\""+df.format(new Date())+ "\",\"message\":\"" + messages+"\"},\"image\":[]}");
writer.flush();
}
}
} catch (Exception e) {
SocketTest3Server.count--;
System.out.println( SocketTest3Server.count+ " Exception下线 " );
SocketTest3Server.socketList.remove(socket);
//new Chat(SocketTest3Server.count, socket, SocketTest3Server.socketList).run();
e.printStackTrace();
}
}
}
相关推荐
java.net.SocketException Connection reset 解决方法
java.net.SocketException Connection reset 解决方法
java.net.SocketException: Connection reset 解决方法
最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
java中的connection reset 异常处理分析
本文主要介绍了java中的connection reset 异常处理分析的相关资料,具有很好的参考价值。下面跟着小编一起来看下吧
Java Socket常见异常处理
在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind。 该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat -an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口能解决该问题了。 第2个异常是java.net.ConnectException: Connection
socket错误代码对应表
Socket错误代码对应表 提示: 在命令提示符下输入:net helpmsg 1xxxx 就能够得到Windows系统提供的错误提示的详细解释。 出现网络联机错误Socket error #11001 表示您的计算机无法连上服务器,请检查您的Proxy设定以及Proxy相关账号,或暂时取消您防毒软件的「个人防火墙」。 · 出现网络联机错误Socket error #11004 应该是网络联机状态问题,请用户检查网络联机是否正常。 · 出现网络联机错误Socket error #10060 Connection Timed Out 表示您与服务器发生联机逾时错误,请检查您的Proxy相关设定,以及Proxy Server是否已将SSL 443 port打开。



