javaTCP获取网线传来的图像数据
package com.hunau.TCP;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.stream.FileImageOutputStream;
import com.sun.xml.internal.ws.client.sei.ResponseBuilder.Body;
/**
*@author 刘衍斌
*@version 创建时间:2018年12月27日 上午10:50:12
*湖南农大物联网
**/
public class test {
public static void main(String[] args){
test deal = new test();
deal.init();
}
public void init(){
try {
ServerSocket serverSocket = new ServerSocket(2041);
Socket socket = null;
while (true){
socket = serverSocket.accept();
DealThread dealThread = new DealThread(socket);
new Thread(dealThread).start();
try {
Thread.sleep(5*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private class DealThread implements Runnable{
private Socket socket;
public DealThread(Socket socket){
this.socket = socket;
}
@Override
public void run() {
BufferedWriter writer = null;
InputStream in = null;
BufferedReader reader = null;
OutputStream os = null;
String path = "C:\\Users\\liuyanbin\\Desktop\\images\\a.jpg";
try {
System.out.println("开始读流");
in = socket.getInputStream();
/*reader = new BufferedReader(new InputStreamReader(in,"GBK"));
char[] bt = new char[8];
do {
if ((reader.read(bt))!=-1){
// System.out.println(data);
}
}while (reader.ready());
socket.shutdownInput();
System.out.println("读取完毕");*/
BufferedInputStream bis = new BufferedInputStream(in);
int n = 0;int i=0 ,end=0;byte[] body = new byte[10240];
while ( (n =bis.read()) != -1){
body[i] = (byte) n;
i++;
}
for (int j = 0; j <= i; j++) {
System.out.print(body[j]);
}
for(int k =32; k < body.length&& k < i; k++) {
if((body[32]!=-1 && body[33] !=-40)||(body[k-1] == -1 && body[k]==-39))
{
end = k;//返回一个结束点
//System.out.print(end);
break;
}
}
if(end>200){//一个简单的过滤条件
byte2image(body,end,path);
}
System.out.println();
i=0;
/*os = socket.getOutputStream();
writer = new BufferedWriter(new OutputStreamWriter(os, "GBK"));
writer.write(successMsg);
writer.flush();*/
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (reader != null) reader.close();
if (in != null) in.close();
if (writer != null) writer.close();
if (os != null) os.close();
if (socket != null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* byte数组到图片
*
* **/
public void byte2image(byte[] data,int end,String path){
String path2 = path;
try{
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path2));
/*for (int i = 32; i < end+1; i++) {
System.out.print(data[i]);
}//检查数据是否正确*/
imageOutput.write(data, 32, end+1);
imageOutput.close();
System.out.println("Make Picture success,Please find image in " + path2);
Thread.sleep(100); //设置暂停的时间 100 毫秒
// readImage2DB(path);
} catch(Exception ex) {
System.out.println("Exception错误: " + ex);
ex.printStackTrace();
}
}
}
}