我正在测试来自Oracle.com的Java套接字读/写基本示例

如果我在同一台计算机上同时运行服务器和客户端,则可以读取/写入。
但是,当要从其他PC读取它时,它将不起作用。

这就是它们通过同一集线器连接的方式。
互联网->本地网络->集线器-> PC1和PC2

PC1是运行KnockKnockServer.java的服务器。
PC2是一个客户端,运行KnockKnockClient.java。

一切都与默认的KnockKnockClient.java相同,但这是:

    kkSocket = new Socket("PC1", 18090);


但是我收到“无法获得与PC1的连接的I / O”错误。

我在PC1的Kaspersky程序和PC2的防火墙中打开了相同的端口。
即使我在PC1中关闭了卡巴斯基和防火墙,它也会显示相同的错误。

有任何想法吗?

谢谢,

最佳答案

尝试使用IP地址而不是远程主机名:

kkSocket = new Socket("192.168.0.1", 18090);


Windows网络通常使用WINS进行主机名解析,而不是使用DNS-大多数家庭网络甚至都没有DNS服务器。这允许Windows本身按名称查找远程服务(例如,共享),但是大多数应用程序仍需要适当的DNS基础结构才能正常工作。

或者,您可能需要编辑hosts文件,以将网络上任何主机的IP地址与其名称相关联。

10-06 14:14