Android socket 客户端本地发图片给服务端接受保存到本地
客户端第一步
private boolean bool;
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
connectTv.setText(bool + "");//显示true就是连接成功
break;
}
}
};
//判断是否和服务器连接成功
case R.id.connect_bu:
new Thread() {
@Override
public void run() {
super.run();
try {
socket = new Socket("192.168.1.54 ", 8756);
bool = socket.isConnected();
Message message = new Message();
message.what = 1;
message.obj = bool;
handler.sendMessage(message);
// socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
break;
第二步发送图片给服务器
case R.id.so_img:
try {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lu
);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,baos);
long len = baos.size();
Log.i("MainActivity_","图片长度="+len);
out.writeLong(len);
out.write(baos.toByteArray());
//out.close();
} catch (IOException e) {
e.printStackTrace();
}
break;
打印图片的长度
服务器端第一步
public static void main(String[] arges) {
try {
/*-------------接受客户端图片数据----------------*/
System.out.println("开始接收信息");
ServerSocket server_so_img = new ServerSocket(8756);
Socket socket = server_so_img.accept();
DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
new Thread(){
@Override
public void run() {
super.run();
while (true){
try {
long len = 0;
len = dataInputStream.readLong();
System.out.println("接受客户端图片长度 = "+ len);
byte[] bytes = new byte[(int) len];
dataInputStream.readFully(bytes);
File file = new File("C:\\img\\"+len+".png");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(bytes);
System.out.println("ok,保持到文件目录");
// dataInputStream.close();
// socket.close();
// server_so_img.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
} catch (IOException e) {
e.printStackTrace();
}
}