Java:如何与机器通信?

问题描述

| 我正在尝试通过java与我的设备进行通信。 我可以使用telnet与之通信,我知道因为我使用PuTTY,所以我的配置是: ip:192.168.1.4端口:2001通讯类型:telnet 这样可以正常工作,我的设备和网络都可以正常工作。 因此,尽管我可以通过java进行相同的操作,然后创建此类:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 *
 * @author Valter
 */

public class Middleware {

    public static void main(String args[]) {
        try {
            Socket socket = new Socket(\"192.168.1.4\",2001);

            // create a channel between to receive data
            DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());

            // create a channel between to send data
            DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());

            dataOutputStream.writeUTF(\"}Rv!\");
//            dataOutputStream.flush();

            String answer= dataInputStream.readUTF();
            System.out.println(\"Answer:\"+answer);

            dataInputStream.close();
            dataOutputStream.close();
            socket.close();

        } catch (UnknownHostException ex) {
            System.out.println(\"EXCEÇÃO UNKNOW HOST EXCEPTION\");
        } catch (IOException ex) {
            System.out.println(\"EXCEÇÃO IOEXCEPTION\");
            System.out.println(ex.getMessage());
        }
    }
}
但是,当我尝试执行此操作时,没有任何反应,没有例外,也没有任何反应。 我看起来就像一个“无休止的”。 我在这里该怎么办? 我应该在这里使用客户端telnet到Java吗?     

解决方法

我不知道您正在使用哪种设备,但是如果通常使用ѭ1键向其键入命令,则可能是向其发送换行符,也许这些换行符需要用作命令终止符。所以也许
dataOutputStream.writeUTF(\"}Rv!\\n\");
要么
dataOutputStream.writeUTF(\"}Rv!\\r\\n\");
(以及取消对that4ѭ的调用的注释)会更好。     ,您真正想要发送到设备的什么? DataOutputStream#writeUTF使用Java特定的字符串编码,并且我怀疑这是设备真正期望的。 除此之外,如果设备确实正确地实现了telnet协议(而不仅仅是可以通过telnet客户端访问的协议),则您必须使用Java telnet库来支持控制序列或自己实现。您不能只像示例代码中那样对套接字进行读写。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...