服务器端是c写的,客户端用java去读取包,socket已经建立了连接,可是在运行时会报如下代码中第一个catch下的异常:
System.out.println("向服务端发送请求,异常:" + ioEx.toString());
用单步调试发现len0 = din.read(b1, 0, 2);这句话报错
想不出解决方法,请水友相助!!!分不够可再加!!!
private String[] readAPackage() {
    try {
      int len0 = 0, len = 0, bint = 0, bint2 = 0;
      String blong2 = "";
      byte[] b1 = new byte[2];
      //读包长
      len0 = din.read(b1, 0, 2);      //读包长
      bint = din.readUnsignedShort();
      ret[1] = String.valueOf(bint);
      if (bint == 0 || bint < 4) {
        //System.out.println("读取数据包长度异常!");
        ret[0] = "-1";
        //return "-1";
        return ret;      }
      byte[] b2 = new byte[bint + 1];
      bint2 = 0;
      while (bint2 < bint) {
        len = din.read(b2, bint2, bint - bint2);
        if (len <= 0) {
          break;
        }
        bint2 += len;
      }      if (bint2 < bint) {
        System.out.println("读取数据包异常!");
      }
      pdata = new String(b2, 0, bint2);
      blong = new String(b1, 1, 1);
       System.out.println("startReceive2pdata."+pdata);
      pdata_t = pdata_t + pdata;    }
    catch (java.io.IOException ioEx) {
      System.out.println("向服务端发送请求,异常:" + ioEx.toString());
      closeSocket();
      pdata = "-1";
      blong = "0";
    }
    catch (Exception ex) {
      pdata = "-1";
      blong = "0";
      System.out.println("socket------>读取数据包异常:" + ex.toString());
      closeSocket();
    }
    ret[0] = pdata;
    //return pdata;
    return ret;
  }