簡體   English   中英

Java - 運行基本套接字網絡程序時出現問題

[英]Java - trouble running basic socket networking program

我正在嘗試實現 Sun 的示例 Socket 程序,即在這里找到的 KnockKnock 服務器和客戶端: http://download.oracle.com/javase/tutorial/networking/sockets/readingWriting.ZA263FDC8ZDA822C69365FDC8ZDA82FC69

所以我將 3 個文件(EchoClient、KnockKnockServer、KnockKnockProtocol)構建到一個項目中,構建它們,然后從 go 到 cmd 運行它們:

> java KnockKnockServer
> Could not listen on port: 4444. 

另外,我在使用 EchoClient 時遇到了問題(這並不是說因為服務器無法工作,這意味着很多)。 我得到以下信息:

> java EchoClient
> Couldn't get I/O for the connection to: localhost 

我在 EchoClient class 中更改的一件事是嘗試連接到“localhost”而不是他們的示例機器“taranis”。 我根本不理解 I/O 錯誤。

所以我需要弄清楚這些東西,這樣我以后才能適應它。 這就是我想知道的:我如何知道 KK 服務器中監聽的端口? 如果我想在 EchoClient 中連接到另一台計算機,我會直接輸入他們的(IPv4)IP 地址而不是“localhost”嗎?

感謝您的任何幫助

嘗試不同的(更高的端口),因為 4444 可能已經在您的機器上使用:

4444端口技術說明:

端口 4444 專門分配給 Kerberos 5 身份驗證功能,特別是 Kerberos 4 在各種系統中的實現,包括在 Mac OS X 平台下運行的系統。 通信端口 4444 用於將 Kerberos 5 憑據轉換為可接受的 Kerberos 4 格式。

資源

該教程違反了關於處理異常的規則 #2:它自己編寫錯誤消息“無法獲取連接到的 I/O:...”,而不是打印實際的異常。 改變它來做到這一點,那么你就有希望找出問題所在。

大約八年前我抱怨過那個教程;-(

(規則 #1 是打印一些東西。

昨天當我試圖學習和你一樣的東西時,我遇到了這個問題!

1)確保服務器和客戶端都具有相同的端口,例如:

kkSocket = new Socket("localhost", 802); //Client 

serverSocket = new ServerSocket(802); //Server serverSocket = new ServerSocket(802); //Server (我偶然遇到了這個問題)

2)嘗試將服務器的端口和客戶端的端口都更改為10000或更高

3)程序輸出“敲。敲!” 而不是您需要輸入輸入。(您描述的掛起可能只是服務器等待輸入)

試試這個:將taranis主機名更改為localhost

kkSocket = new Socket("localhost", 4444);

暫無
暫無

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

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