android 发送图片,调试时,能正常收到,一旦错乱,后面全部错乱了。
websocket判断第一位数据大于128,否则,就会解析出错。
int a = (156 & 0x80);
或者解析长度为127,则只能读取127位数据,后面的数据都丢了。
出错原因估计是丢包了。
public static void startHttpClientWebSocket() {
AsyncHttpClient.getDefaultInstance().websocket("ws://192.168.27.54:" + PORT, null, new AsyncHttpClient.WebSocketConnectCallback() {
@Override
public void onCompleted(Exception ex, WebSocket webSocket) {
Log.i(TAG, "----------------startHttpClientWebSocket------websocket---onCompleted-" + webSocket);
if (ex != null) {
ex.printStackTrace();
return;
}
webSocket.setDataCallback(new DataCallback() {
@Override
public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
Log.d("Socket", "接收到:" + new String(bb.getAllByteArray()));
}
});
webSocket.setClosedCallback(new CompletedCallback() {
@Override
public void onCompleted(Exception ex) {
if (ex != null) {
Log.d("Socket", "setClosedCallback出错");
return;
}
Log.d("Socket", "setClosedCallback");
}
});
webSocket.setEndCallback(new CompletedCallback() {
@Override
public void onCompleted(Exception ex) {
if (ex != null) {
Log.d("Socket", "setEndCallback出错");
return;
}
Log.d("Socket", "setEndCallback");
}
});
webSocket.setWriteableCallback(new WritableCallback() {
@Override
public void onWriteable() {
Log.d("Socket", "onWriteable");
}
});
mywebSocket=webSocket;
final String order = "测试信息";
// Util.writeAll(webSocket, order.getBytes(), new CompletedCallback() {
// @Override
// public void onCompleted(Exception ex) {
// if (ex != null) {
// Log.d("Socket", "writeAll出错");
// return;
// }
// Log.d("Socket", "发送了:" + order);
// }
// });
}
});
byte[] encode = Base64.encode(rawImage1, Base64.DEFAULT);
// String base64 = new String(encode);
// String faceBase64 = bitmapToBase64(bitmap).replace("=", "").replace("/", "_").replace("+", "-").replace("\n", "");
final String order = "测试信息";
Util.writeAll(AsynUtils.mywebSocket, encode, new CompletedCallback() {
@Override
public void onCompleted(Exception ex) {
if (ex != null) {
Log.d("Socket", "writeAll出错");
return;
}
// Log.d("Socket", "发送了:" + order);
}
});