2016-03-17 40 views
0

如果我從應用程序服務器上運行的應用程序建立套接字連接,那麼返回的數據會轉到哪裏?是否需要在具有指定端口的應用程序中創建接收服務器套接字,還是需要在服務器用於連接到應用程序的端口上接收套接字,我只需要編寫能夠提取該數據的內容?在應用程序服務器上接收數據?

回答

0

這是從套接字讀取的代碼。您正在將套接字連接到服務器中的端口8080。您不必擔心操作系統 - >服務器端口。

public static void readSocket() throws IOException { 
    try (Socket s = new Socket(InetAddress.getByName(new URL("Some Address").getHost()), 8080); 
      BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()))) { 
     String line = null; 
     while ((line = input.readLine()) != null) { 
      System.out.println(line); 

     } 
    } 
} 
0

套接字是網絡的服務器和客戶端程序之間的雙向通信鏈路的一個端點。

  1. 返回的數據發送到您的客戶端的Socket對象,可以稱之爲clientSocket。你需要撥打clientSocket.getInputStream()來解碼它。

  2. 不,您不需要在應用程序中創建接收服務器套接字。您的客戶端程序在給定的主機和端口上建立到服務器的連接。 clientSocket既可以將數據發送到服務器,也可以從服務器接收數據。

例如客戶端側的代碼:

private PrintWriter out = null; 
private BufferedReader in = null; 

public void listenSocket(){ 
//Create socket connection 
    try{ 
    clientSocket = new Socket(HOST, PORT); 

    // use out object to send data to server applicaiton 
    out = new PrintWriter(clientSocket.getOutputStream(), 
       true); 

    // uses in object to receive data from server application 
    in = new BufferedReader(new InputStreamReader(
       clientSocket.getInputStream())); 
    } catch (UnknownHostException e) { 
    System.out.println("Unknown host:" + HOST); 
    System.exit(1); 
    } catch (IOException e) { 
    System.out.println("No I/O"); 
    System.exit(1); 
    } 
} 
相關問題