求助!关于网络字节转换问题
目前我这边有一个http访问的程序,对方的响应消息网络协议是这样的字段名称   类型            长度 说明
a          32位无符号整数  4    高16位表示主版本,低16位表示低版本
                                                   (目前的通信协议是高16位为0xfefd, 低16位为 0xfcfb)b          32位无符号整数  4     表示长度
c          32位无符号整数  4       类型为32位无符号整数d          32位无符号整数  4    e          16位无符号整数  2     
我的程序大概是这样写的
//通过http发送一个请求
url = new URL("http://xxx.xxx.xxx/xxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(0); 
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
HttpUrlLogin  http =new HttpUrlLogin();
conn.getOutputStream().write("1".getBytes());//获取返回响应的字节流
InputStream in = conn.getInputStream();如何根据上面的协议得到a,b,c,d,e 的值,目前是我疑惑的地方,如果通过in一个个字节遍历循环得到的是乱码,我想应该会有字节转换的问题。但是这一块也就是需要大侠帮忙的地方
不知道代码怎么实现这些转换

解决方案 »

  1.   

    InputStream 字节流 只能一个字节一个字节读取 遇到中文会产生乱码
    楼主可以试试 字符流 BufferedReader 来读取
    另外:
    DataInputSream 是二进制格式
    PrintWirter 是文本格式
      

  2.   

    conn.getOutputStream().write("1".getBytes());//發送過去的是byte,而且流寫完數據後flush一下是好習慣如果是用in.read()方法,把in.read()的結果   &0xff   流發送的是byte類型的數據 而in.read()出來的是int類型如果是in.reade(byte[] buffer)方法,在轉成字符串時記得加編碼,在發送時最好用UTF-8編碼