Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-运行基本套接字网络程序时出现问题_Java_Sockets_Networking - Fatal编程技术网

Java-运行基本套接字网络程序时出现问题

Java-运行基本套接字网络程序时出现问题,java,sockets,networking,Java,Sockets,Networking,我正在尝试实现Sun的示例套接字程序,即在此处找到的KnockKnock服务器和客户端: 因此,我将3个文件(EchoClient、KnockKnockServer、KnockKnockProtocol)构建到一个项目中,构建它们,然后转到cmd运行它们: > java KnockKnockServer > Could not listen on port: 4444. 另外,我在EchoClient上遇到了问题(因为服务器不工作,所以这并不意味着什么)。我得到以下信息: >

我正在尝试实现Sun的示例套接字程序,即在此处找到的KnockKnock服务器和客户端:

因此,我将3个文件(EchoClient、KnockKnockServer、KnockKnockProtocol)构建到一个项目中,构建它们,然后转到cmd运行它们:

> java KnockKnockServer
> Could not listen on port: 4444. 
另外,我在EchoClient上遇到了问题(因为服务器不工作,所以这并不意味着什么)。我得到以下信息:

> java EchoClient
> Couldn't get I/O for the connection to: localhost 
我在EchoClient类中改变的一件事是尝试连接到“localhost”,而不是他们的示例机器“taranis”。但我根本不理解I/O错误

所以我需要弄清楚这件事,以便以后能适应它。我想知道的是:如何知道KK服务器中监听的端口是什么?如果我想连接到EchoClient中的另一台计算机,我会直接输入它们的(IPv4)IP地址而不是“localhost”吗

感谢您的帮助

请尝试其他(更高的端口),因为您的计算机上可能已经在使用4444:

端口4444的技术说明:

端口4444专门分配给Kerberos 5身份验证功能,特别是在各种系统(包括在Mac OS X平台下运行的系统)中实现Kerberos 4。通信端口4444用于将Kerberos 5凭据转换为可接受的Kerberos 4格式

请尝试其他(更高的端口),因为您的计算机上可能已经在使用4444:

端口4444的技术说明:

端口4444专门分配给Kerberos 5身份验证功能,特别是在各种系统(包括在Mac OS X平台下运行的系统)中实现Kerberos 4。通信端口4444用于将Kerberos 5凭据转换为可接受的Kerberos 4格式

该教程违反了关于处理异常的规则#2:它自行生成错误消息“无法获取到:….连接的I/O”,而不是打印实际的异常。把它改成那样,你就有希望找出哪里出了问题

大约八年前,我抱怨过那个教程-(

(规则#1是打印一些东西。)

该教程违反了关于处理异常的规则#2:它自己编写了一条错误消息“无法获取连接到的I/O:…”,而不是打印实际的异常。将其更改为这样做,然后您就有希望发现出了什么问题

大约八年前,我抱怨过那个教程-(


(规则1是打印一些东西。)

我昨天在学你一样的东西时遇到了这个问题

1) 确保服务器和客户端具有相同的端口,例如:

kkSocket = new Socket("localhost", 802); //Client 
serverSocket=newserversocket(802);//服务器
(我偶然遇到这个问题)

2) 尝试将服务器端口和客户端端口都更改为10000或更高


3) 程序输出“敲打!敲打!”然后您需要输入。(您描述的挂起可能只是服务器在等待输入)

昨天我在尝试学习与您相同的东西时遇到了这个问题

1) 确保服务器和客户端具有相同的端口,例如:

kkSocket = new Socket("localhost", 802); //Client 
serverSocket=新的serverSocket(802)//服务器
(我偶然遇到这个问题)

2) 尝试将服务器端口和客户端端口都更改为10000或更高

3) 程序输出“Knock!Knock!”,然后您需要键入输入。(您描述的挂起可能只是服务器在等待输入)

尝试以下操作: 将
taranis
主机名更改为
localhost

kkSocket = new Socket("localhost", 4444);
试试这个: 将
taranis
主机名更改为
localhost

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

可能一个程序已经在使用4444端口了。当您在命令行上运行lsof-i:4444时,它会说什么?嗯,我得到“'lsof'不被识别为内部或外部命令、可操作程序或批处理文件”。可能程序已经在使用端口4444。当您在命令行上运行lsof-i:4444时,它会说什么?嗯,我得到“'lsof'不被识别为内部或外部命令、可操作程序或批处理文件”。谢谢。我还可以尝试其他哪些好端口?我对不同的端口不太了解。请尝试10000以上的任何数字。我想你的最大值是65535。好吧,我试了4601(在这个答案的链接中找到了),现在我没有得到错误,但是命令行挂在那里。看来程序被冻结了。怎么了?谢谢你。我还可以尝试其他哪些好端口?我对不同的端口不太了解。请尝试10000以上的任何数字。我想你的最大值是65535。好吧,我试了4601(在这个答案的链接中找到了),现在我没有得到错误,但是命令行挂在那里。看来程序被冻结了。怎么回事?