2015-12-28 50 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);