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