2016-12-21 14 views
1

私はJavaでクライアント/サーバーアプリケーションを書いています。このコードは、クライアントのソケットが既に自分のサーバーに接続されているかどうかを確認するのに正しいですか?このコード行を実行した結果は、どちらかであるソケットがすでにサーバーに接続されているかどうかを確認するにはどうすればよいですか?

package ServerCommunication; 

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 


public class MultiServer { 

    public void openSocket() throws IOException { 
     ServerSocket serverSocket = null; 
     boolean listening = true; 
     MultiServerThread w=null; 
     try { 
      serverSocket = new ServerSocket(1633); 
      System.out.println("Waiting on 1633."); 
     } catch (IOException e) { 
      System.err.println("Could not listen on port: 1633."); 
      System.exit(-1); 
     } 

     while (listening) { 
      System.out.println("Hearing"); 
      Socket mysocket=serverSocket.accept(); 
      if(mysocket.isConnected()) 
       System.out.println("Already connected"); 
      else{ 
       System.out.println("Need to create one"); 
       w = new MultiServerThread(mysocket); 
       Thread t = new Thread(w); 
       t.start(); 
        } 
     } 

     serverSocket.close(); 
     System.out.println("Multiserver closed"); 
    } 
} 

答えて

0

while (listening) { 
    System.out.println("Hearing"); 
    Socket mysocket=serverSocket.accept(); 

...私は非常に新たなんだと、この特性は非常に私を殺さないでそれは私の最初のアプリですIOExceptionまたはSocketをクライアントに接続してください。

if(mysocket.isConnected()) 

無意味です。接続されています。削除します。

 System.out.println("Already connected"); 

もちろん接続されています。それはaccept()のためです。削除します。

​​

到達不能です。削除します。

  System.out.println("Need to create one"); 

いいえ。削除します。

  w = new MultiServerThread(mysocket); 
      Thread t = new Thread(w); 
      t.start(); 

これはすべて無意味です。削除します。

関連する問題