Closed java.net.SocketException

I send an object for the client to the server, modifying this object on the server side and resending it to the client. Sending a client of the form of the object to the server works fine, but when I send the object back, it gives an exception. The socket is closing. Here is the code. IntString and ParentObj are the classes from which I send objects.

Client1 Class:

import java.net.*; import java.io.*; public class Client1 { public static void main(String args[]) { int arr[] = new int[10]; int length = 6, i, counter_1; ParentObj obj1; for (i = 0; i < length; i++) { arr[i] = i + 10; } try { Socket s = new Socket("localhost", 6789); IntString obj = new IntString(arr, length); /* * OutputStream os = s.getOutputStream(); * ObjectOutputStream oos = new ObjectOutputStream(os); * * oos.writeObject(obj); * oos.close(); * os.close(); */ Send_recv snd = new Send_recv(s); snd.sendObj((ParentObj) obj); if (s.isClosed()) { System.out.println("Closed"); // s.connect(null); } obj1 = snd.recObj(); obj = (IntString) obj1; if (obj != null) { for (counter_1 = 0; counter_1 < obj.length_of_row; counter_1++) { System.out.println(obj.row[counter_1]); obj.row[counter_1]++; } } // s.close(); } catch (Exception e) { System.out.println(e); } } } 

Server class

 import java.net.*; import java.io.*; public class Server1 { public static void main(String args[]) { IntString obj; ParentObj obj1; int port = 6789, counter_1; try { ServerSocket ss = new ServerSocket(port); Socket s = ss.accept(); Send_recv rev = new Send_recv(s); /* * InputStream is = s.getInputStream(); * ObjectInputStream ois = new ObjectInputStream(is); * IntString obj = (IntString)ois.readObject(); */ obj1 = rev.recObj(); obj = (IntString) obj1; System.out.println(s.getInetAddress()); System.out.println(s.getLocalAddress()); if (obj != null) { for (counter_1 = 0; counter_1 < obj.length_of_row; counter_1++) { System.out.println(obj.row[counter_1]); obj.row[counter_1]++; } } if (ss.isClosed()) { System.out.println("Closed ss"); } if (s.isClosed()) { System.out.println("Closed in Server"); } Send_recv snd = new Send_recv(s); snd.sendObj((ParentObj) obj); } catch (Exception e) { System.out.println(e + "In Server"); } } } 

The Send_recv class for sending and receiving objects.

 import java.io.*; import java.net.*; public class Send_recv { Socket s; IntString obj1; public Send_recv(Socket s) { this.s = s; } public void sendObj(ParentObj obj) { try { OutputStream os = s.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(os); oos.writeObject(obj); oos.close(); os.close(); } catch (Exception e) { System.out.println(e); } } public ParentObj recObj() { try { InputStream is = s.getInputStream(); ObjectInputStream ois = new ObjectInputStream(is); obj1 = (IntString) ois.readObject(); ois.close(); is.close(); } catch (Exception e) { System.out.println(e); } return (obj1); } } 
+4
source share
1 answer
 java.net.SocketException socket is closed 

This exception means that you closed the socket and then continued to try to use it.

 os.close(); 

And you closed it here. Closing an input or output stream Socket closes another stream and Socket.

+15
source

All Articles