2017-11-18 3 views
0

JavaFxとその機能を初めて使用しています。私はローカル接続で再生される2人のチェッカーのゲームを作成しています。 JavaFXではメインクラスは必要ないと理解しています。なぜなら、開始関数の@Overrideは基本的にメインとして機能するからです。今私は、その開始関数で作成しようとしている私の接続を持っているが、私がしようとするたびにjava.net.BindExceptionとjava.lang.RuntimeExceptionを吐き続ける。私は自分のポートを見て、それは使用されていません。私は、コードの接続部分をコメントアウトし、アプリケーションを実行することができました。あなたはスタート機能で接続できませんか?オーバーライドされた開始関数のJavaソケットプログラミング

クライアントコード:

@Override 
    public void start(Stage primaryStage) throws Exception, ClassNotFoundException, IOException,UnknownHostException { 
     Scene scene1 = new Scene(createContent()); 
     primaryStage.setTitle("Client Side"); 
     primaryStage.setScene(scene1); 
     primaryStage.show(); 

     socket = new Socket("127.0.0.1",1337); 

     boolean end = false; 
     boolean turn = true; 
     Serializable ObjectInputStream; 
     ObjectInputStream I = new ObjectInputStream(socket.getInputStream()); 
     Serializable ObjectOutputStream; 
     ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); 
     Scanner scan = new Scanner(socket.getInputStream()); 
     PrintStream p = new PrintStream(socket.getOutputStream()); 
     do 
     { 


     while(turn == true) 
      { 
       temp1 = scan.nextInt(); 
       temp2 = scan.nextInt(); 
       Checker check = (Checker) I.readObject(); 
       check.relocate(temp1, temp2); 
       turn = false; 
      } 
      while(turn == false) 
      { 

       p.println(sendX); 
       p.println(sendY); 
       o.writeObject(sendO); 
       turn = true; 


      } 


     }while(end == false); 

    } 

Serverコードはまさにそれの逆である:

@Override 
    public void start(Stage primaryStage) throws Exception, 
    ClassNotFoundException, IOException,UnknownHostException { 
    Scene scene = new Scene(createContent()); 
    primaryStage.setTitle("Server Side"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

    serverSocket = new ServerSocket(1337); 
    Socket socket = serverSocket.accept(); 
    boolean end = false; 
    boolean turn = true; 
    Serializable ObjectInputStream; 
    Serializable ObjectOutputStream; 
    ObjectInputStream I = new ObjectInputStream(socket.getInputStream()); 
    ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); 
    Scanner scan = new Scanner(socket.getInputStream()); 
    PrintStream p = new PrintStream(socket.getOutputStream()); 
    do 
    { 


    while(turn == true) 
     { 
     p.println(sendX); 
     p.println(sendY); 
     o.writeObject(sendO); 
     turn = false; 
     } 
     while(turn == false) 
     { 


     temp1 = scan.nextInt(); 
     temp2 = scan.nextInt(); 
     Checker check = (Checker) I.readObject(); 
     check.relocate(temp1, temp2); 
     turn = true; 

     } 


    }while(end == false); 

    } 

答えて

0

使用ブロック

try { 
     serverSocket = new ServerSocket(1337); 
     Socket socket = serverSocket.accept(); 
    } 
    catch (IOException e) { 
     System.out.println(e); 
    } 

    boolean end = false; 
    boolean turn = true; 
    Serializable ObjectInputStream; 
    Serializable ObjectOutputStream; 
    ObjectInputStream I = new ObjectInputStream(socket.getInputStream()); 
    ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); 
    Scanner scan = new Scanner(socket.getInputStream()); 
    PrintStream p = new PrintStream(socket.getOutputStream()); 
    do 
    { 


    while(turn == true) 
    { 
    p.println(sendX); 
    p.println(sendY); 
    o.writeObject(sendO); 
    turn = false; 
    } 
    while(turn == false) 
    { 


    temp1 = scan.nextInt(); 
    temp2 = scan.nextInt(); 
    Checker check = (Checker) I.readObject(); 
    check.relocate(temp1, temp2); 
    turn = true; 

    } 


    }while(end == false); 

    } 
+0

ダイスはありません。私はまだ同じエラーが発生しています。それは私がスタートメソッドでこれを行うのが好きではないようです。私はどこでそれをやるべきかわからない。 – unclass123

+0

同じポートに別のプロセスをバインドしていただきありがとうございます。 – Shomu

0

Yをキャッチしてみ別のプロセスを同じポートにバインドしようとする可能性があります。私はJVM_BINDエラーがあるとき

TCPView(Windowsのみ)WindowsのSysinternalsのは、私のお気に入りのアプリです。どのプロセスがどのポートをリッスンしているかを示します。また、便利なコンテキストメニューを提供して、プロセスを終了させるか、途中で接続を閉じることができます。

+0

興味深い..今、私は、クライアント側で、EOFexceptionを取得しています。ObjectInputStream I = new ObjectInputStream(socket.getInputStream()); – unclass123

関連する問題