我正在學(xué)習(xí)如何在 Java 中制作客戶(hù)端/服務(wù)器程序的教程(這里是: https: //docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)我到了最后一部分套接字教程,您可以在其中制作客戶(hù)端/服務(wù)器程序,其中服務(wù)器講敲門(mén)笑話(huà),客戶(hù)端響應(yīng):服務(wù)員:“敲敲!”客戶(hù):“誰(shuí)在那里?”服務(wù)器:“德克斯特?!笨蛻?hù):“德克斯特是誰(shuí)?”服務(wù)器:“有冬青樹(shù)枝的德克斯特大廳?!笨蛻?hù):“呻吟?!蔽乙呀?jīng)復(fù)制了 KnockKnockClient.java、KnockKnockServer.java、KnockKnockProtocol.java 的代碼(我將這些文件命名為 Client.java、Server.java、Protocol.java),現(xiàn)在我要做的最后一部分是編譯和運(yùn)行代碼. 我成功地編譯了協(xié)議和客戶(hù)端代碼,但是每當(dāng)我嘗試編譯服務(wù)器代碼時(shí),我都會(huì)收到一個(gè)看起來(lái)像第一個(gè)錯(cuò)誤的錯(cuò)誤我已經(jīng)嘗試了所有方法,但找不到修復(fù)它的方法。我知道導(dǎo)致錯(cuò)誤的代碼行試圖使用 KnockKnockProtocol.java 文件創(chuàng)建一個(gè)對(duì)象,但這就是我真正能弄清楚的全部?jī)?nèi)容。我檢查了拼寫(xiě),嘗試從 SocketsKnockKnockServer 包的父文件夾編譯代碼并且確實(shí)編譯了代碼,但是當(dāng)我嘗試從父文件夾運(yùn)行它時(shí),我得到了一個(gè)看起來(lái)像第二個(gè)錯(cuò)誤的不同錯(cuò)誤。當(dāng)我試圖從包文件夾運(yùn)行它時(shí),它給了我和以前一樣的錯(cuò)誤。//the codepackage SocketsKnockKnockServer;import java.net.*;import java.io.*;public class Server { public static void main(String[] args) throws IOException { if (args.length != 1) { System.err.println("Usage: Java Server.java <port number>"); System.exit(1); } int portNumber = Integer.parseInt(args[0]); try ( ServerSocket serverSocket = new ServerSocket(portNumber); Socket clientSocket = serverSocket.accept(); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); ) { String inputLine, outputLine; //intiate conversation with client Protocol kkp = new Protocol(); outputLine = kkp.processInput(null); out.println(outputLine); while ((inputLine = in.readLine()) !=null) { outputLine = kkp.processInput(inputLine); out.println(outputLine); if (outputLine.equals("bye")) break; } }
2 回答

蠱毒傳說(shuō)
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
我通過(guò)將文件(Client.java、Server.java、Protocol.java)傳輸?shù)皆次募A而不是將它們保存在包中來(lái)解決問(wèn)題。

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的 java 文件名為 KnockKnockProtocol.java,但您正在創(chuàng)建的對(duì)象名為 Protocol。要么將 KnockKnockProtocol.java 重命名為 Protocol.java,要么在 Server 中創(chuàng)建一個(gè)名為 Protocol 的內(nèi)部類(lèi)。此外,它需要是靜態(tài)的。
添加回答
舉報(bào)
0/150
提交
取消