服务器端是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;
}
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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货