没有从服务器得到任何响应,但能够从 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 得到响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 telnet 的 HTTP 请求没有得到任何响应

Spring boot:有时没有从基于 Rest Api 的服务中得到任何响应

Nodejs telnet 实时响应获取

如何从 bash 获取 telnet 命令的输出?

如果没有得到任何想要的数据从我的服务器发送到 zapier,应该向 zapier 发送啥响应

Telnet 服务器回显选项导致不需要的空白