Я получаю ошибки на своем сервере, когда тип сообщения клиента «подключается», это очень странно.Является ли мой класс шлейфов сервера Socket правильно?
сервера Код получателя:
package threads;
public class ReceiveFromClientThread extends Thread {
ObjectInputStream inFromClient = null;
ServerSocket servs = new ServerSocket();
Socket link = null;
Message m = null;
public void run() {
try {
this.servs.servs.accept();
this.inFromClient = new ObjectInputStream(link.getInputStream());
} catch (SocketException e3) {
System.err.println(" Connection reset by peer.");
} catch (IOException e1) {
e1.printStackTrace();
}
while(true) {
try {
if (link.isConnected()) {
this.m = (Message) inFromClient.readObject(); //SHOULDN'T THIS THREAD PAUSE HERE?
if (m.getType().equalsIgnoreCase("normal")) {
System.out.println("[" + m.getTimestamp() + "] "
+ m.getOwner() + " -> " + m.getText());
ServerMain.mc.pushMessageToList(this.m); //Added to message list.
} else if (m.getType().equalsIgnoreCase("connect")) {
System.out.println(m.getOwner() + " connected from "
+ this.link.getInetAddress()+":"+this.link.getPort());
} else if (m.getType() == "disconnect") {
System.err.println("[" + m.getTimestamp() + "] "
+ "[Origin: " + m.getIp() + "] " + m.getOwner()
+ " Disconnected.");
}
}
} catch (IOException | ClassNotFoundException e) {
}
}
}
public ReceiveFromClientThread(Socket link) {
this.link = link;
}
}
Client Код соединения:
ClientMain.sock = new Socket("127.0.0.1",21215);
ClientMain.oos = new ObjectOutputStream(sock.getOutputStream());
Message m = new Message();
m = m.setType("connect");
m.setOwner("Raphael");
m.setIp(sock.getInetAddress().getHostAddress());
m.setPcname(sock.getInetAddress().getCanonicalHostName());
clientmain.ClientMain.oos.writeObject(m);
Это должно работать, но это дает бесконечный цикл или иногда NullPointerException. Есть ли ошибка в моем коде? Не следует ли приостановить поток сервера на строке readObject()?
Не могли бы вы предоставить полный код вашего Клиента? –
Закрывает клиентский сокет после отправки сообщения? – Joachim
Да, предоставляет ли StackOverFlow, где я могу поделиться кодом? – raphaelbgr