|

第一步服务端
public static void main(String[] arges) {
/*服务器发送图片给客户端*/
new Thread(){
@Override
public void run() {
System.out.println("发送图片信息");
ServerSocket server_so_img = null;
try {
server_so_img = new ServerSocket(8756);
while (true){
Socket socket = server_so_img.accept();
System.out.println("连接了8756");
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
FileInputStream fis = new FileInputStream("C:\\\\img\\\\img.png");
int size = fis.available();
byte[] data = new byte[size];
fis.read(data);
dos.writeInt(size);
dos.write(data);
dos.flush();
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}

第二步客户端
private Bitmap bmp = null;
Handler handler = null;
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 2: imgImg.setImageBitmap(bmp); 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.img_bu: new Thread(){ @Override public void run() { try { DataInputStream dataInput = new DataInputStream(socket.getInputStream()); int size = dataInput.readInt(); byte[] data = new byte[size]; int len = 0; while (len<size){ len += dataInput.read(data,len,size-len); } ByteArrayOutputStream output = new ByteArrayOutputStream(); bmp = BitmapFactory.decodeByteArray(data,0,data.length); bmp.compress(Bitmap.CompressFormat.PNG,100,output); Message message = new Message(); message.what = 2; message.obj = bmp; handler.sendMessage(message); } catch (IOException e) { e.printStackTrace(); } } }.start(); break; githum网站源码: https://github.com/wwliyineng/Android-Socket |