java.net.SocketException: Connection reset
服务端
public static void main(String[] args) {
ConfigManager man=ConfigManager.getInstance();
List<CommandGroup> group=man.getCommandGroup();
List<Socket> socket=null;
try {
ServerSocket server=new ServerSocket(9123);
socket=new ArrayList<Socket>();
while (true) {
server.setSoTimeout(5000);
Socket sockcet= server.accept();
socket.add(sockcet);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < socket.size(); i++) {
byte[] buf=OtherUtils.toSerialize(group.get(0));
PackageFactory.write(buf, socket.get(i));
}
}
客户端
public static void main(String[] args) {
try {
Socket socket=new Socket("localhost", 9123);
System.out.println(socket.isClosed());
ObjectInputStream inputStream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
CommandGroup group =(CommandGroup) inputStream.readObject();
System.out.println(group.getLoop());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
报错:
java.net.SocketException: Connection reset异常产生的原因有两方面:
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
检查下你的是否存在客户端程序退出了,但是outputstream流并没有关闭呢。
以后logcat直接复制粘贴不要截图,还有要尽量改用AndroidStudio
尽量使用AndroidStudio