У меня проблема. Я хочу попытаться сделать мою первую большую систему сервер-клиент. Моя Система пока что: У меня есть Клиент, который может подключиться к серверу и отправить пакет входа в систему с именем Клиента. Сервер может получать и «читать» пакеты, но если я хочу прочитать имя из пакета, возникает ошибка: ЕСЛИ я не приведу объект к строке, которую я получил:
Logging Client in. [Ljava.lang.Object;@73310db6
ЕСЛИ я разыграл:
Exception in thread "Thread-1" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
at de.bachmaiers.net.Server$2.run(Server.java:129)
at de.bachmaiers.net.Server$1$1.run(Server.java:88)
at java.lang.Thread.run(Thread.java:748)
Мой код:
Как я отправил посылку:
protected void login() {
if(stopped)
return;
//1. Connect
try {
System.out.println("[Client] Connection...");
if(loginSocket != null && loginSocket.isConnected())
throw new AlreadyConnectedException();
loginSocket = new Socket();
loginSocket.connect(this.address);
System.out.println("[Client] Connected to " + loginSocket.getRemoteSocketAddress());
//2. Login
System.out.println("[Client] Logging in...");
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(loginSocket.getOutputStream()));
System.out.println("[Client] " + id);
Datapackage loginPackage = new Datapackage("_INTERNAL_LOGIN_", id,group);
loginPackage.sign(id, group);
out.writeObject(loginPackage);
out.flush();
//
} catch (IOException e) {
System.out.println("[Client] LOGIN Failed " + e.getMessage());
}
}
И как я ее получил: protected void registerLoginMethod ( ) {idMethods.put (INTERNAL_LOGIN_ID, new Executable () {
@Override
public void run(Datapackage msg, Socket socket) {
System.out.println("run");
if(msg.size() ==3) {
System.out.println("[Server] Logging Client in. " + (String) msg.get(1));
registerClient((String) msg.get(1), (String) msg.get(2), socket);
}
}
});
}
Ошибка в строке 5
Мой класс пакета:
public class Datapackage extends ArrayList<Object>{
private String senderID = "UNSIGNED";
private String senderGroup = "UNSIGNED";
public Datapackage(String id, Object...o) {
this.add(0, id);
for(Object current: o) {
this.add(o);
}
}
protected void sign(String senderID, String senderGroup) {
this.senderID = senderID;
this.senderGroup = senderGroup;
}
}
Надеюсь, вы может помочь мне, и вы можете понять мою проблему.
Спасибо.