java使用socket连接4G DTU设备发短信

java使用socket连接4G DTU设备发短信测试Demo


import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;


public class SocketTest {
//在dtu测试工具里面用tcp测试正常,在java代码里面需要unicode转码  转码后默认加4个0   官方文档里面有
    public static String toUnicode(String s) {
        String as[] = new String[s.length()];
        String s1 = "";
        for (int i = 0; i < s.length(); i++) {
            as[i] = Integer.toHexString(s.charAt(i) & 0xffff);
            s1 = s1 + as[i];
        }
        return s1;
    }

    public static void main(String[] args) {
        try{
        //自己需要连接的dtu设备Ip加端口号
            Socket socket = new Socket("192.168.xx.xxx", xxxxx);
            if(socket.isConnected()){
                System.out.println("连接中···请稍后");
                OutputStream ops = socket.getOutputStream();
                String content = toUnicode("微服务");
                //DTU设备指令 加手机号,手机号后要有空格 接着换行符\n
                String msg = new String("at+sms=176xxxxxxxx "+content+"0000"+"\n");
                ops.write(msg.getBytes());
                ops.flush();
                System.out.println();
            }
        }
        catch(UnknownHostException unknownHostException){
            unknownHostException.printStackTrace();
        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
    }
}


这里提醒一下,如果你的文件读写没有达到预期目的,十之八九是因为你没有调用 flush() 或者 close() 方法。

另外,字符流类大多数都实现了 flush() 或者 close() 方法,只不过,它们调用的是 StreamEncoder
类的该方法。该类位于 sun.nio.cs 包下面,其源码在我们JDK中是没有的。

flush 与 Writer
该类 Writer 是一个抽象类,声明如下:

public abstract class Writer implements Appendable, Closeable, Flushable

细节请看JDK的API,或者Java的源码以及上面的 StreamEncoder 类源码。

今天就说到这里吧,本文主要借助Java IO中字节流与字符流的 flush() 方法,来说明学编程语言看源码和思考是很重要的。

总之,不管你使用哪种流(字符、字节、具有缓冲的流)技术,不妨调用一下 flush() 或者 close() 方法,防止数据无法写到输出流中。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现Java4G DTU设备之间的通信,可以通过以下步骤: 1. 首先,确保Java程序中有相应的串口通信库,例如rxtx或JavaComm。这些库可以让Java程序通过串口与设备进行通信。 2. 确保4G DTU设备正确配置,配置包括设置串口参数(如波特率、数据位、校验位和停止位),并确保设备与计算机通过串口连接。 3. 在Java程序中,使用串口通信库打开与设备相连的串口,可以通过指定串口号或设备名称来打开串口。 4. 建立与设备的通信会话。可以通过向设备发送指令或数据来与设备进行通信,例如读取设备状态、发送控制命令等。 5. 在Java程序中,接收和解析来自设备的响应。可以通过读取串口缓冲区的数据来获取设备的响应,然后解析响应以获取所需的信息。 6. 根据需要,可以在Java程序中实现对设备进行控制的功能。这可以通过向设备发送控制命令或数据来实现。 7. 最后,在与设备通信完成后,记得关闭串口并释放相应的资源,以确保程序的正确执行。 综上所述,通过使用相应的串口通信库,可以在Java程序中实现与4G DTU设备的通信。通过打开串口,发送和接收数据,解析响应等步骤,可以实现与设备的通信,并根据需要进行相应的控制操作。 ### 回答2: 要实现 Java4G DTU 设备之间的通信,我们可以采用以下步骤: 1. 确定设备接口:首先,我们需要了解 4G DTU 设备的通信接口类型,例如串口、以太网等。根据接口类型,我们选择适当的 Java 库和插件来实现通信。 2. 连接设备使用 Java 提供的串口通信库或者网络通信库,我们可以建立 Java 程序与 4G DTU 设备之间的连接。如果是串口通信,我们需要指定正确的端口和波特率;如果是网络通信,我们需要指定正确的 IP 地址和端口号。 3. 通信协议:在建立连接后,我们需要确定设备使用的通信协议。4G DTU 设备通常使用 Modbus、MQTT 或者自定义的协议进行通信。根据设备的协议,我们可以使用相应的 Java 库来解析和封装数据。 4. 数据读取和写入:通过 Java 程序与 4G DTU 设备之间的连接,我们可以实现对设备的数据读取和写入。根据设备的协议,我们可以发送合适的指令或者请求来获取设备的数据,同时也可以发送指令来向设备写入数据。 5. 异常处理:在通信过程中,可能会出现各种异常情况,例如通信中断、超时等。我们需要使用异常处理机制来捕获和处理这些异常,以保证程序的稳定运行。 6. 数据解析和处理:获取到设备的数据后,我们可以利用 Java 提供的数据处理和计算功能对数据进行解析和处理。根据具体的应用场景,我们可以把数据存储到数据库、进行数据分析或者其他操作。 需要注意的是,以上步骤仅提供了一个基本的通信框架,具体实现还需要根据具体的设备和应用场景进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值