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); Send_recv snd = new Send_recv(s); snd.sendObj((ParentObj) obj); if (s.isClosed()) { System.out.println("Closed");
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); 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); } }
source share