第一步服务端
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