没有从服务器得到任何响应,但能够从 telnet 得到响应
Posted
技术标签:
【中文标题】没有从服务器得到任何响应,但能够从 telnet 得到响应【英文标题】:not getting any response from server, but able to get response from telnet 【发布时间】:2013-05-13 12:08:55 【问题描述】:我首先通过 *** 客户端连接,然后我可以进行远程登录,并且当我在终端上粘贴请求字符串时也能够得到响应。
如果我通过 java 程序尝试相同的请求,我没有得到任何响应。
当我尝试通过 java 时,我可以看到使用 netstat 建立了 TCP 连接。 TCP 10.2.2.22:1154 184.23.23.61:7565 已建立
这是发送请求的 java 客户端代码。
Socket client = new Socket(serverIp, port);
OutputStream out = client.getOutputStream();
InputStream in = client.getInputStream();
String test = "TUE231363**";
StringBuffer response = new StringBuffer("response : ");
out.write(test.getBytes());
out.flush();
int c;
System.out.println("waiting for response.......>>>>>>>>>>>>>");
while ((c = in.read()) != -1)
if (isEndOfResponse(c))
break;
System.out.print((char) c);
response.append(c);
client.close();
System.out.println(response.toString());
每次几分钟 [5-6 分钟] 后它都会退出而没有任何响应。
我对网络有点陌生,谁能建议我缺少什么。
【问题讨论】:
在从客户端发送请求后,为什么不尝试先调试服务器代码? 您确定您的请求没有被某种防火墙阻止吗?您看到的行为似乎类似于这样的情况。你能看到对服务器的请求吗? 我确信客户端没有防火墙问题。并且由于我能够通过 telnet 从服务器获得正确的响应,因此服务器上也不应该有。 【参考方案1】:我假设您正在远程登录到您尝试从 Java 连接到的相同 IP 地址和端口。
telnet
已连接,并且您的客户端似乎也已连接,这意味着服务器正在运行,并且它已在正确的 IP / 主机上创建了 ServerSocket
绑定。它甚至可能正确地调用accept
。但似乎服务器根本没有读取请求,或者无法发送响应。
无论哪种方式,问题很可能出在服务器端......如果没有看到服务器端代码,我们无话可说。
【讨论】:
我无法控制服务器代码,我只收到服务器地址和端口。服务器的咨询团队说那里没有任何问题,因为我能够通过 telnet 从服务器获得正确的响应。 如果可以通过telnet得到正确的响应,那么你在Java客户端发送请求一定有问题。但是,由于您没有向我们描述协议,我们只能猜测。 (我的猜测是你遗漏了 CR/LF 之类的。) 感谢斯蒂芬,发现我的请求字符串中缺少 Ctrl+s,我在请求字符串中添加了“\u0013”,我得到了正确的响应。 啊。我知道了。从您的问题中我不清楚您是否正在尝试实施“telnet”。但是教训(我猜)是阅读协议规范是值得的。尝试从头开始实施标准协议时的文档。以上是关于没有从服务器得到任何响应,但能够从 telnet 得到响应的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:有时没有从基于 Rest Api 的服务中得到任何响应