簡體   English   中英

簡單的Java客戶端-服務器:客戶端確實連接到服務器

[英]Simple Java client-Server : Client doent connect to server

我正在實現一個客戶端服務器應用程序。 我是新來的 。 我嘗試按照文章A Simple Java TCP Server and TCP Client

實際上我已經有一個可以工作的客戶端(不是我的代碼)

所以我只需要為此編寫服務器。

另外,我的服務器將僅由一個客戶端連接,因此我真的看不到需要支持多個客戶端。

如我所見,使用netstat -a創建了一個偵聽服務器,但是客戶端無法連接到它。 沒有給出任何令人驚訝的錯誤消息。 好像對連接的調用被忽略了。 在客戶端上看不到任何異常。

我的服務器代碼(可能是錯誤的)

private static void create_request_server(int requestport) {
    // TODO Auto-generated method stub

    try {
        ServerSocket s1 = new ServerSocket(requestport);
        requestsocket = s1.accept();
          // Do some stuff . But this accept never breaks. 
    } catch (Exception e) {
        e.printStackTrace();
    }
}

正確的客戶

try {
            fRequestSocket = new Socket("localhost", requestPort);
            fRequestWriter = new PrintWriter(fRequestSocket.getOutputStream());
            fRequestReader = new BufferedReader(new InputStreamReader(fRequestSocket.getInputStream()));


        } catch (UnknownHostException e) {
            abort(" UnknownHostException", e);
        } catch (IOException e) {
            abort(" IOException", e);
        }

費耶

我的客戶端和服務器都在本地主機上

我的服務器嚴重錯誤嗎?

編輯(接近答案)

因此,借助下面發布的寶貴意見,我弄清了問題所在。 問題出在localhost和127.0.0.1之間

所以我做了一個netstat -a ,看到一個服務器創建如下:

TCP [::]:56283 Sin-Host LISTENING

代替

TCP 127.0.0.1:56283 Sin-Host LISTENING 

因此客戶端無法連接。 關於如何使服務器綁定的任何想法o 127.0.0.1

可以對ServerSocket s1 = new ServerSocket(requestport)進行任何更改嗎?

有時localhost和127.0.0.1有問題
在您的客戶端中嘗試ip也許可行。

只是要比使用此構造函數在注釋中更容易看到它,您可以配置服務器:

new ServerSocket(1234,10,InetAddress.getByName("127.0.0.1"));

您是否嘗試過檢查防火牆?

可能是防火牆阻止了請求。 設置連接的方式與我的方式非常相似。 但是在這里工作正常。

有了套接字后,您仍然需要創建一個in和output流,以從服務器發送數據和向服務器接收數據(大聲笑語法)

OutputStream writer = requestsocket.getOutputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(requestsocket.getInputStream());

現在,每當您要從服務器向客戶端發送數據時,都可以執行以下操作:

writer.println("Data sending to client that's listening to my server");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM