2015-09-19 88 views
1

這是我的代碼,當我在eclipse中的調試模式下運行它時,它告訴我它不會停止停留在代碼中,箭頭。TCP連接,serversocket.accept運行時不會創建套接字

private ServerSocket serverSocket = null; 
    private Socket socket= null; 
    private ObjectInputStream inputStream= null;  
public void ConnectTCP(){ 
     try{ 
      serverSocket = new ServerSocket(5000); 
     ---->socket = serverSocket.accept(); 
      inputStream = new ObjectInputStream(socket.getInputStream()); 
      System.out.print("Server is Running"); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 

回答

1

您的套接字已在此行創建。因爲服務器綁定到一個端口,所以此時調用ServerSocket構造函數。至於接受方法,due to JavaDoc

偵聽與此套接字的連接並接受它。該方法會阻塞,直到建立連接。 創建一個新的Socket s,如果存在安全管理器,則使用s.getInetAddress()。getHostAddress()和s.getPort()作爲其參數調用安全管理器的checkAccept方法,以確保允許操作。這可能會導致SecurityException。

所以,accept方法正在等待客戶端連接,這就是爲什麼執行停止在這一點。可能是,讀取java official tutorial來編寫服務器端可能會有幫助。

0

其實它不會停下來,它正在等待連接。 當客戶端想要連接它時,它會連接到該套接字並且程序流轉到下一行。