-1

如果我执行以下代码(注意:不是正在使用的真实 IP 地址)

Socket s = new Socket("120.200.100.111", 80);
s.setSoTimeout(10 * 1000);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
in.readLine();

10 秒后,我得到“SocketTimeoutException:读取超时”

但如果我远程登录,我会得到:

telnet> open 120.200.100.111 80
Trying 120.200.100.111...
Connected to foo.bar.org.
Escape character is '^]'.

请注意,我知道对于一个完整的应用程序,我应该使用某种现有的 API 进行套接字通信,但上述测试不应该从服务器获得某种及时的响应吗?

4

1 回答 1

2

上述测试不应该从服务器获得某种及时的响应吗?

不,Telnet 交换不会从服务器向您发送任何内容开始。必须发送一些东西。服务器在等你;你在等它;您是读取超时的人,因此您会收到读取超时。

Telnet 客户端默认不使用读取超时。

于 2013-04-15T06:34:49.710 回答