java发送固定字节到C++接口

需求:java工程需要发送一个socket消息到C++接口,C++接口中规定了若干个参数,并且每个参数的长度是固定的,起始位置也是固定的,

C++那边是GB2312编码,java这边是UTF-8。

现象:一开始用StringBuffer拼接字符串,最后转成byte[]发送,发现英文的字符是没有问题的,中文的就会存在长度变动或参数起始位置偏移现象。

解决:直接生成符合总长度要求的byte数组---A,对每个参数值进行转码后得到byte数组---B,把B赋予A。

代码如下:

  1: 
  2: import java.io.OutputStream;
  3: import java.net.InetSocketAddress;
  4: import java.net.Socket;
  5: 
  6: public class Test {
  7: 
  8:   public static void main(String[] args) throws Exception {
  9:     String paraString = "中国A";
 10:     byte[] bytes = paraString.getBytes("GB2312");
 11:     byte[] byteMsg=new byte[100];
 12:     for (int i = 0; i < bytes.length; i++) {
 13:       byteMsg[i] = bytes[i];
 14:     }
 15:     OutputStream out = null;
 16:     Socket socket = new Socket();
 17:     socket.connect(new InetSocketAddress("192.168.6.201", Integer.parseInt("60000")), 30000);
 18:     out = socket.getOutputStream();
 19:     out.write(byteMsg);
 20:     socket.close();
 21:   }
 22: 
 23: }
原文地址:https://www.cnblogs.com/huiy/p/5488184.html