问题描述
- socket通信 客户端报错
- 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(); } }
解决方案
Socket(Tcp)通信客户端
Linux服务器与JAVA客户端(android)的socket通信
解决方案二:
java.net.SocketException: Connection reset异常产生的原因有两方面:
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
检查下你的是否存在客户端程序退出了,但是outputstream流并没有关闭呢。
解决方案三:
以后logcat直接复制粘贴不要截图,还有要尽量改用AndroidStudio
解决方案四:
尽量使用AndroidStudio
时间: 2024-10-03 16:57:09