如果服务器端口错误,则客户端正在等待响应

时间:2011-05-08 13:50:39

标签: java sockets

客户端输入一些有关服务器的信息(例如服务器名称,端口号vs ...)以及将要发送的消息。但如果它写错了端口号,客户端仍然等待响应。

如果没有为目标服务器打开端口,如何抛出异常?

2 个答案:

答案 0 :(得分:1)

如果服务器没有侦听端口,它将获得ConnectException: Connection refused但是,如果连接到运行不同服务的端口,则可能无法获得响应,具体取决于该服务的功能。如果这是一个问题,我建议你如果没有得到预期的结果就超时连接。

答案 1 :(得分:1)

@skaffman的评论是对的。

通常,当您尝试打开没有正在侦听的端口的TCP / IP连接时,远程计算机上的TCP / IP堆栈通过发送RST响应初始SYN消息,这会导致“连接拒绝“例外。

如果您没有看到此异常,最可能的原因是某些内容阻止了SYN消息(或正常的SYNACK响应)。这通常是防火墙(两端)。常见的防火墙策略是为除少数端口之外的所有端口静默丢弃TCP SYN消息。这会产生你观察到的效果。

无论哪种方式,您都无法立即获得异常。您可以做的最好是设置非零连接超时,并捕获超时异常