[英]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.