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 best solutions below