【问题标题】:Telnet test is OK, but my java socket client is not workingTelnet 测试正常,但是我的 java socket 客户端不工作
【发布时间】:2018-03-30 06:02:06
【问题描述】:

我的合作伙伴系统服务套接字服务器。他们不共享客户端模块,只测试样本数据。
首先,我使用 telnet 程序进行了测试,它是成功的。 this image link is the test using telnet program.
但是我的 Java 套接字客户端无法接收来自套接字服务器的消息。
this image link is result of my socket program.
你能帮我吗? 谢谢。

    public static void main(String[] args) {
    System.out.println("file.encoding: " + System.getProperty("file.encoding"));
    try {
        Socket socket;

        final String HOST = "xx.xx.xx.xxx"; // partner test server
        final int PORT = 8994;

        try {
            socket = new Socket(HOST, PORT);
        } catch (IOException ioe) {
            System.out.println(">>>");
            System.out.println(ioe.getMessage());
            System.out.println(">>>");
            throw ioe;
        }
        System.out.println("sending data:");
        OutputStream os = socket.getOutputStream();
        byte[] b = "xxxx52017082410332310000000020321                                    ONL00000                                                                                                              080081COP0045             3xxxxxxxxxxxxxxx/jOsBUe5I11C2mtP0j5tPSww==20170824103323                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ".getBytes();
        for (int i = 0; i < b.length; i++) {
            os.write(b[i]);
        }
        os.flush();
        socket.shutdownOutput();
        System.out.println(new String(b) + "[END]");
        System.out.println("receiving data");
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) {
            System.out.println(inputLine);

        }
        socket.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。使用“编辑”链接改进您的问题 - 不要通过 cmets 添加更多信息。谢谢!
  • “不工作”不是工作问题描述。你就像一个人称他的车库为“我的车发出奇怪的声音。现在告诉我如何修理”。不可能。
  • "但是我的 Java 套接字客户端不工作。"我们需要更多细节。 究竟是什么不起作用?您是如何尝试解决的?代码在哪里?
  • @GhostCat - “我的车发出奇怪的声音”的解决方案是正确拼写 cat :-)。薛定谔的猫:自 1935 年以来在盒子里思考 :-)

标签: java sockets character-encoding telnet


【解决方案1】:

我找到了解决办法。

服务器套接字程序发送的是字节数据,而不是字符串行。 请在下面找到我的源代码。

谢谢大家。

        socket = new Socket(ip, port);
        System.out.println("SEND DATA[" +msg.length() + "] [" + msg + "]");
        oout = new BufferedOutputStream(socket.getOutputStream());
        iin = new BufferedInputStream(socket.getInputStream());
        oout.write(msg.getBytes());
        oout.flush();

        byte[] buffer = new byte[1156];
        System.out.println("RECV DATA");
        iin.read(buffer);

        System.out.println("RECV DATA [" + new String(buffer) +"]");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2012-07-29
    • 2012-09-03
    • 2018-09-07
    相关资源
    最近更新 更多