2015-12-28 4 views
-1

У меня есть многопользовательская Java-игра (четыре клиента и сервер), которые все классы были в одном файле, я решил переписать основной класс и сохранить код в нескольких более коротких классах. (без синтаксической ошибки или ошибки времени выполнения), со стороны сервера это выглядит нормально, но не с клиентской стороны Я решил использовать заявление Print, чтобы добраться до ошибки, кажется, что клиент не может работать ниже код:многопользовательская игра Java, проблема расщепления

public class ServerManager implements Runnable { 


public static BufferedReader in; 

public static PrintWriter out; 


private Socket socket; 

@Override 
public void run() { 
    try 
    { 
     socket = Connection.connectToServer(GameStatus.serverIP, GameStatus.serverPort); 
     if(socket != null) { 
      return; 
     } else { 

     } 

     in = new BufferedReader(new InputStreamReader(
      socket.getInputStream())); 
     out = new PrintWriter(socket.getOutputStream(), true); 

рабочая версия приложения для этой конкретной области, как показано ниже

BufferedReader in; 
PrintWriter out; 
public static void main(String[] args) { 
.... 
.... 
.... 
private class startClient implements Runnable { 
     private Socket socket; 

     @Override 
     public void run() { 
      try 
      { 
       try { 
        socket = new Socket(serverIP, serverPort); 
       } catch (Exception ex) { 

        return; 
       } 
       in = new BufferedReader(new InputStreamReader(
        socket.getInputStream())); 
       out = new PrintWriter(socket.getOutputStream(), true); 

Есть ли в моем коде какие-либо проблемы?

ответ

0

ну, я поставил попытку в начале соединения сокета и поймал исключение в конце класса, просто дал ему попробовать и сохранил улов сразу после соединения сокета, и он сработал.

 try 
    { 
     try{ 
     socket = Connection.connectToServer(GameStatus.serverIP, GameStatus.serverPort); 
     //if(socket != null) { 
      //return; 
     //} else { 

    // } 
     } catch (Exception ex){ 
      JOptionPane.showMessageDialog(null, "Can not connect to server!"); 
      if(ex.toString().trim().equals("java.net.SocketException: Connection reset")) 
      { 
       JOptionPane.showMessageDialog(null, "Server is down!\nThe game will now exit..."); 
       System.exit(0); 
      } 
      //else 
     } 
    //} 

     in = new BufferedReader(new InputStreamReader(
      socket.getInputStream())); 
     out = new PrintWriter(socket.getOutputStream(), true); 
Смежные вопросы