Приводит ли чтение объекта переменной в двух разных файлах к исключению java.io.StreamCorruptedException: неверный код тJAVA

Программисты JAVA общаются здесь
Гость
Приводит ли чтение объекта переменной в двух разных файлах к исключению java.io.StreamCorruptedException: неверный код т

Сообщение Гость »


Переменная считывается как в файле ClientsListener, так и в файле Client Main, поскольку переменная is используется в качестве аргумента для файла ClientsListener. Может ли это привести к ошибке java.io.StreamCorruptedException: неверный код типа: ошибка AC?

Код: Выделить всё

    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 oos = new ArrayList();

public static ArrayList ois = new ArrayList();

public static ArrayList sockets = new ArrayList();

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. Все работает как положено, пока не появится сообщение «java.io.StreamCorruptedException: неверный код типа: 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)


Источник: https://stackoverflow.com/questions/781 ... -java-io-s

Вернуться в «JAVA»