基于Android的远程视频监控系统(附源码下载)(五)

2014-11-24 10:38:58 · 作者: · 浏览: 2

private byte byteBuffer[] = new byte[1024];
private OutputStream outsocket;
private ByteArrayOutputStream myoutputstream;
private String ipname;

public MyThread(ByteArrayOutputStream myoutputstream,String ipname){
this.myoutputstream = myoutputstream;
this.ipname = ipname;
try {
myoutputstream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void run() {
try{
//将图像数据通过Socket发送出去
Socket tempSocket = new Socket(ipname, 6000);
outsocket = tempSocket.getOutputStream();
ByteArrayInputStream inputstream = new ByteArrayInputStream(myoutputstream.toByteArray());
int amount;
while ((amount = inputstream.read(byteBuffer)) != -1) {
outsocket.write(byteBuffer, 0, amount);
}
myoutputstream.flush();
myoutputstream.close();
tempSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}


  二、PC服务器端
ImageServer.java 用于显示图像,并且可以拍照


public class ImageServer {
public static ServerSocket ss = null;

public static void main(String args[]) throws IOException{
ss = new ServerSocket(6000);

final ImageFrame frame = new ImageFrame(ss);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

while(true){
frame.panel.getimage();
frame.repaint();
}
}

}

/**
A frame with an image panel
*/
@SuppressWarnings("serial")
class ImageFrame extends JFrame{
public ImagePanel panel;
public JButton jb;

public ImageFrame(ServerSocket ss){
// get screen dimensions
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;

// center frame in screen
setTitle("ImageTest");
setLocation((screenWidth - DEFAULT_WIDTH) / 2, (screenHeight - DEFAULT_HEIGHT) / 2);
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

// add panel to frame
this.getContentPane().setLayout(null);
panel = new ImagePanel(ss);
panel.setSize(640,480);
panel.setLocation(0, 0);
add(panel);
jb = new JButton("拍照");
jb.setBounds(0,480,640,50);
add(jb);
saveimage saveaction = new saveimage(ss);
jb.addActionListener(saveaction);
}

public static final int DEFAULT_WIDTH = 640;
public static final int DEFAULT_HEIGHT = 560;
}

/**
A panel that displays a tiled image
*/
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private ServerSocket ss;
private Image image;
private InputStream ins;

public ImagePanel(ServerSocket ss) {
this.ss = ss;
}

public void getimage() throws IOException{
Socket s = this.ss.accept();
System.out.println("连接成功!");
this.ins = s.getInputStream();