JAVA 网络编程(TCP 上传图片)

来源:互联网 发布:借款网站源码 编辑:程序博客网 时间:2024/06/02 08:05

例一:

/*客户端:1,服务端点2,读取客户端已有的图片信息3,通过socket 输出流将数据发给服务端4,读取服务端反馈信息5,关闭*/import java.io.*;import java.net.*;class PicClient{public static void main(String []args) throws Exception{Socket s = new Socket("127.0.0.1",5554);FileInputStream fis = new FileInputStream("a.bmp");OutputStream out = s.getOutputStream();byte [] buf = new byte [1024];int len = 0;while((len = fis.read(buf))!= -1){out.write(buf,0,len);}//告诉服务端 数据已经写完s.shutdownOutput();InputStream in = s.getInputStream();byte [] bufIn = new byte[1024];int num = in.read(bufIn);System.out.println(new String(bufIn,0,num));fis.close();s.close();}}/*服务端*/class PicServer{public static void main(String []args) throws Exception{ServerSocket ss = new ServerSocket(5554);Socket s = ss.accept();InputStream in = s.getInputStream();FileOutputStream fos = new FileOutputStream("server.bmp");byte []buf = new byte[1024];int len = 0;while((len = in.read(buf))!=-1){fos.write(buf,0,len);}OutputStream out = s.getOutputStream();out.write("上传成功!".getBytes());fos.close();s.close();ss.close();}}




//TCP 客户端并发上传图片/*客户端*/import java.io.*;import java.net.*;class PicClient{public static void main(String []args) throws Exception{//传入图片路径if(args.length != 1){System.out.println("请选择要上传的图片:");return;}File file = new File(args[0]);if( !(file.exists() && file.isFile())){System.out.println("文件不存在 或 文件已损坏!");return;}if( !file.getName().endsWith(".jpg")){System.out.println("文件格式错误,请重新选择!");return;}if(file.length() > 1024*1024*5){System.out.println("文件过大");return;}Socket s = new Socket("127.0.0.1",5554);FileInputStream fis = new FileInputStream(file);OutputStream out = s.getOutputStream();byte [] buf = new byte [1024];int len = 0;while((len = fis.read(buf))!= -1){out.write(buf,0,len);}//告诉服务端 数据已经写完s.shutdownOutput();InputStream in = s.getInputStream();byte [] bufIn = new byte[1024];int num = in.read(bufIn);System.out.println(new String(bufIn,0,num));fis.close();s.close();}}/*服务端*/class PicThread implements Runnable{private Socket s;PicThread(Socket s){this.s = s;}public void run(){int count =0;String ip = s.getInetAddress().getHostAddress();try{System.out.println(ip +"...connected!");InputStream in = s.getInputStream();File file = new File(ip+"("+count+").jpg");while(file.exists())file = new File(ip+"("+(++count)+").jpg");FileOutputStream fos = new FileOutputStream(file);byte []buf = new byte[1024];int len = 0;while((len = in.read(buf))!=-1){fos.write(buf,0,len);}OutputStream out = s.getOutputStream();out.write("上传成功!".getBytes());fos.close();s.close();} catch (Exception e){throw new RuntimeException( ip +"上传失败!");}}}class PicServer{public static void main(String []args) throws Exception{ServerSocket ss = new ServerSocket(5554);while(true){Socket s = ss.accept();new Thread(new PicThread(s)).start();}//ss.close();}}


原创粉丝点击