繁体   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