Does reading the Object of a variable in two different files lead to a java.io.StreamCorruptedException: invalid type code: AC error?

29 views Asked by At

The variable is is read in both the ClientsListener and Client Main files since the is variable is used as an argument for the ClientsListener file. Could this lead to a a java.io.StreamCorruptedException: invalid type code: AC error?

    package chatRoom2;


    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.Socket;
    import java.util.Scanner;

    public class ClientMain
    {
        public static void main(String[] args)
        {
            try {
            
           
                ChatRoomInfo info = new ChatRoomInfo(); //How should the infos communicate?
            Scanner s = new Scanner(System.in);
            System.out.println("Enter your name:");
            String username = s.nextLine();
            
            while (!ChatRoomInfo.nameIsAvailable(username))
            {
                System.out.println("Enter your name:");
                username = s.nextLine();
                
            }
            
            System.out.println("Enter the ip address of the server:");
            String address = s.nextLine();
            s.close();
           
            Socket socket = new Socket(address,8001);
            ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
                ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
            
                System.out.println("Connected as " + username);
                CommandFromServer cfs = (CommandFromServer) is.readObject();
                ChatRoomFrame2 frame = new ChatRoomFrame2(os, username);
            
                ClientsListener cl = new ClientsListener(is,os,frame);
                Thread t = new Thread(cl);
                t.start();
                os.writeObject(new CommandFromClient(CommandFromClient.JOINED, username, ""));
            
            
            
            
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    package chatRoom2;


    import java.io.ObjectInputStream;


    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;

    public class ServerMain
    {

    ServersListener sl;

    
    public static ArrayList<ObjectOutputStream> oos = new ArrayList<ObjectOutputStream>();
    
    public static ArrayList<ObjectInputStream> ois = new ArrayList<ObjectInputStream>();
    
    public static ArrayList<Socket> sockets = new ArrayList<Socket>();
    
    
    public static void main(String[] args)
    {
        try
        {
     
            ServerSocket serverSocket = new ServerSocket(8000);
            while(true)
            {
                
                    Socket a = new Socket();
                    
                    a = serverSocket.accept();
                    sockets.add(a);
                    
                    
                    ObjectOutputStream b = new ObjectOutputStream(a.getOutputStream());
     
                    
                    
                    ObjectInputStream c = new ObjectInputStream(a.getInputStream());
                
                    ServersListener sl = new ServersListener(c, b);
               

                    
                
                

                ObjectOutputStream os = new ObjectOutputStream(a.getOutputStream());

                ObjectInputStream is = new ObjectInputStream(a.getInputStream());
                

                Thread t = new Thread(new ServersListener(is,os));

                t.start();
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
        
    }

This is the console output. Everything works as expected until "java.io.StreamCorruptedException: invalid type code: AC."

    Enter your name:
    k
    Enter the ip address of the server:
    127.0.0.1
    Connected as k
    java.io.StreamCorruptedException: invalid type code: AC
        at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1775)
        at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
        at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
        at chatRoom2.ClientMain.main(ClientMain.java:37)
0

There are 0 answers