Я пытаюсь написать приложение переключения Java-сообщений с помощью многопоточного сервера и двух клиентов. Однако я застрял в какой-то момент, когда возникает ошибка при попытке запустить мои программы. Вот мои коды для сервера:Null Pointer Исключение при попытке запуска многопоточного сервера Java
public class EchoServer extends Thread {
private static ServerSocket serverSocket;
private static Socket connection1;
private static Socket connection2;
private BufferedReader input;
private PrintWriter output;
final static int portNumber = 4434;
public EchoServer(Socket in,Socket out) throws IOException{
connection1 = serverSocket.accept();
connection2 = serverSocket.accept();
input = new BufferedReader(new InputStreamReader(in.getInputStream()));
output = new PrintWriter(out.getOutputStream(),true);
}
public void run()
{
String inputLine;
while((inputLine=input.readLine())!=null){
if(inputLine.equalsIgnoreCase("quit"))
break;
System.out.println("received:" + inputLine);
output.println(inputLine);
}
System.out.println("received quit,exiting");
}
public static void main(String args[]){
serverSocket = new ServerSocket(portNumber);
System.out.println("listening on port:"+ portNumber);
EchoServer echoserver1 = new EchoServer(connection1,connection2);
EchoServer echoserver2 = new EchoServer(connection2,connection1);
echoserver1.start();
echoserver2.start();
}
}
Я также написал два класса для клиентов. Когда я запускаю сервер, а затем первый клиент, они работают так, как ожидалось. Однако, когда я пытаюсь запустить второй клиент, NullPointerException брошено, в отношении к следующим двум направлениям:
input = new BufferedReader(new InputStreamReader(in.getInputStream()));
EchoServer echoserver1 = new EchoServer(connection1,connection2);
Я знаю, что это довольно длинный кусок кодов, чтобы смотреть на, но я действительно застрял, как я не вижу проблемы здесь. Более ранняя однопоточная версия сервера, на которой я писал, работала без ошибок, поэтому я знаю, что есть что-то делать с многопоточным. Любая помощь и совет действительно оценены. Благодаря!
Большое вам спасибо! Это сработало сразу после того, как я переместил эти строки, как вы предлагаете. Я пытаюсь написать два клиента обмена сообщениями, которые могут использоваться для отправки сообщения друг другу на основе многопоточного сервера. Это еще не закончено, но ваш ответ очень помог. Еще раз спасибо! – Teee
@Teee Отлично! Взгляните на это, если вы: http://stackoverflow.com/help/someone-answers –