Socket s = new Socket(serverAddress, 10086);
OutputStream out = s.getOutputStream();out.write("1#启动成功".getBytes());//1#就是我们加的标识
s.close();
2.接收端
ServerSocket ss = new ServerSocket(10086);
Socket accept = ss.accept();
//3.获取客户端发送过来的数据
InputStream in = accept.getInputStream();
int count = 0;
while (count == 0) {//获取流的长度
count = in.available();
}
String flag = getBodyLength(in);//获取流前面的标识//这里的flag就会是我们的1#了,那我们就可以使用对应的解析方式了//继续解析也就只能获取标识后面的数据了,这也正式我们想要的switch (flag) {
case"1#"://解析字符串
pullString(in);
break;
case"2#"://解析图片
pullBitmap(in);
break;
publicfinalint headerBufferSize = 2;//每次要读取流头部的长度publicsynchronized String getBodyLength(InputStream is) throws IOException {
byte[] b = readIs2(is, headerBufferSize);
returnnew String(b, "UTF-8");
}
publicsynchronizedbyte[] readIs2(InputStream is, int len) throws IOException {
byte[] data = newbyte[len];
int i = 0;
while (i < len) {
int r = is.read(data, i, len - i);
if (r <= 0) {
return data;
}
i = i + r;
}
return data;
}