首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

请问高人

2013-01-28 
请教高人前几天做项目时遇到一个问题,百思不得其解,故发出来请高人指点迷津,功能是与c++的一个系统进行通

请教高人
前几天做项目时遇到一个问题,百思不得其解,故发出来请高人指点迷津,
功能是与c++的一个系统进行通信,报文结构:6字节头+报文体,使用a方法发送,对方可以正常接收,使用b方法发送时,对方可以正常接收报文头,但在接收报文体时,报文体的开始位置总是出现乱码。
代码大致如下:

private void a(String str,int type,int scn) {byte buffer[];str=str+"\0";int len = str.length() + 6;buffer = new byte[len];buffer[5] = (byte) ((scn >> 8) & 0xff);buffer[4] = (byte) (scn & 0xff);buffer[3] = (byte) ((type >> 8) & 0xff);buffer[2] = (byte) ((type) & 0xff);buffer[1] = (byte) ((len >> 8) & 0xff);buffer[0] = (byte) (len & 0xff);try {System.arraycopy(str.getBytes("UTF-8"), 0, buffer, 6, len - 6);} catch (UnsupportedEncodingException e) {e.printStackTrace();}                socket = new Socket(ip, port);                os = socket.getOutputStream();DataOutputStream dos=new DataOutputStream(os);                dos.write(buffer);        dos.flush();}private void b(String str,int type,int scn) {byte buffer[];str=str+"\0";int len = str.length() + 6;buffer = new byte[len];buffer[5] = (byte) ((scn >> 8) & 0xff);buffer[4] = (byte) (scn & 0xff);buffer[3] = (byte) ((type >> 8) & 0xff);buffer[2] = (byte) ((type) & 0xff);buffer[1] = (byte) ((len >> 8) & 0xff);buffer[0] = (byte) (len & 0xff);                socket = new Socket(ip, port);                os = socket.getOutputStream();DataOutputStream dos=new DataOutputStream(os);                dos.write(buffer);                dos.write(str.getBytes("UTF-8"));        dos.flush();}


热点排行