附上代码;java服务器端import java.io.*;import java.awt.*;import java.awt.image.*;import javax.imageio.ImageIO;import sun.rmi.runtime.Log;import sun.util.LocaleServiceProviderPool.LocalizedObjectGetter;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class ServerSend extends Thread{ private DataOutputStream dos; private Robot robot; public ServerSend(DataOutputStream dos) { this.dos = dos; } public void run() { sendCapture(); } private void sendCapture() { try { robot = new Robot(); } catch(AWTException e) { e.printStackTrace(); } final Toolkit tk=Toolkit.getDefaultToolkit(); final Dimension dm=tk.getScreenSize(); final Rectangle rec=new Rectangle(dm); while(true) { try { byte[] data = createImage(rec); System.out.println("sendDATA"+data.length); dos.writeInt(data.length); dos.write(data); dos.flush(); System.out.println("serversend"+dos.size()); Thread.sleep(10000); } catch(Exception e) { e.printStackTrace(); } } } public byte[] createImage(Rectangle rec)throws IOException { BufferedImage im = robot.createScreenCapture(rec); ByteArrayOutputStream baos = new ByteArrayOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos); encoder.encode(im);
return baos.toByteArray(); }}安卓手机端(客户端):package com.LongControl;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.BitmapDrawable;import android.util.Log;import android.view.SurfaceView;import android.view.View;import android.os.Bundle;import android.os.Handler;import java.io.*;import java.net.Socket;import com.LongControl.R;import android.widget.*;public class ClientAccept extends Activity{ private ImageView image; private DataInputStream dis; private Socket client; byte[] inputByte=null; int length=0; int i= 0; private Handler mHandler = new Handler(); private Runnable mRunnable = new Runnable() { public void run() { ShowScreen(); //每2秒执行一次 mHandler.postDelayed(mRunnable, 2000); } }; @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.clientui); image = (ImageView)findViewById(R.id.image); Connect("172.17.20.250",10030); mHandler.post(mRunnable); } @Override protected void onDestroy() { //将线程销毁掉 mHandler.removeCallbacks(mRunnable); super.onDestroy(); } public void Connect(String serverip,int serverport) { try { client = new Socket(serverip,serverport); dis = new DataInputStream(client.getInputStream()); } catch(Exception e) { e.printStackTrace(); Toast.makeText(ClientAccept.this,e.toString(), Toast.LENGTH_SHORT).show(); } } public void ShowScreen() { while(true) { try { // 创建data数组并将流中数据读取到数组中 int len = dis.readInt(); byte[] data = new byte[len];// 注此处同样没有处理图片大小超过int的范围的情况 dis.readFully(data); //应该要和readInt呆在一起要不然会出现异常 System.out.println("clientDATA"+data.length); // 根据读到的文件数据创建Bitmap对象bitmap,因为将要在后面的内部类中使用bitmap,所以定义为 // final型 final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); image.setImageBitmap(bitmap); } catch(Exception e) { System.out.println("出现异常"); e.printStackTrace(); } } }}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货