《黑马程序员》 图片上传服务端的多线程技术的体现
2014-03-06 14:05
204 查看
------- android培训、java培训、期待与您交流! ----------
package cn.itcast.p4.task; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class UploadClient { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { /** * 图片上传客户端的建立: * */ //建立客户端连接 Socket s=new Socket("172.168.151.212",10000); //使用文件读取流和源文件关联 FileInputStream fis=new FileInputStream("d:\\vail1.png"); //获取socket流将数据发送给服务端 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 ins=s.getInputStream(); byte [] buin=new byte[1024]; int mess=ins.read(buin); String text=new String(buin,0,mess); System.out.println(text); //关闭资源 //关闭普通流,socket流不需要关闭,因为一关闭,通道就不存在了。数据就无法进行传输了。 fis.close(); s.close(); } } package cn.itcast.p4.task; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class UploadServer { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { /** * 服务端的建立: * */ //创建服务端 ServerSocket ss=new ServerSocket(10000); while(true){ //获取客户端 Socket s=ss.accept(); new Thread(new UploadTask(s)).start(); } // ss.close(); } } package cn.itcast.p4.task; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class UploadTask implements Runnable { private Socket s; int count=0; //用于给文件编号使用 public UploadTask(Socket s) { super(); this.s = s; } @Override public void run() { //获取客户端的信息 String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+".....connection"); try { //获取socket流读取客户端的数据 InputStream in=s.getInputStream(); //创建目的,用于将读取到的图片数据写入到目的地中 File dir=new File("c:\\pic"); if(!dir.exists()){ dir.mkdirs(); } //封装文件名 File file=new File(dir,ip+".jpg"); //如果使用ip做为文件的名称存在的话,就使用ip+编号来做为文件名称。 while(file.exists()){ file=new File(dir,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 (IOException e) { // TODO: handle exception e.printStackTrace(); } } }
相关文章推荐
- 黑马程序员 TCP协议多个用户同时上传图片到服务端
- 黑马程序员--Socket编程并发上传图片,并发登陆,模拟浏览器请求服务端服务
- Froala Editor 在编辑器里上传图片到自己的服务端
- android-HttpClient上传信息(包括图片)到服务端
- 使用ajax异步回调函数实现服务端图片上传验证
- 在CentOS7上安装ftp服务器用于保存服务端上传的图片。
- 黑马程序员-网络编程-上传图片
- javaweb网页上传图片并显示在页面上,并在服务端存到磁盘(base64编码解码)
- PHP服务端如何通过程序将图上传到指定的图片服务器与图片服务器的优化方案
- 【java基础:net】基于多线程的TCP图片上传客户端与服务端Demonstration
- 黑马程序员_上传图片的缩放处理
- Android中图片上传服务器(android端和服务端)
- HttpClient上传信息(包括图片)到服务端
- 如何在服务端保存用户上传的图片文件
- 前后端分离之图片上传服务端处理方法
- java实现服务端开启多线程处理客户端的上传图片请求
- ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上传目录的尺寸限制
- 黑马程序员--Socket编程文本和图片上传
- Android实现文件, 图片上传,以及服务端接收相关
- PHP做服务端给移动端上传图片接口无结果返回