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