java TCP并发实现文件上传---转载(PS:适合java1.6之前)
2015-02-06 18:41
309 查看
/**客户端1、服务端点2、读取客户端已有的文件数据3、通过socket输出流发给服务端4、读取服务端反馈信息5、关闭**/import java.io.*;import java.net.*;class UploadClient{ 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("202.194.240.74",4444); 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);//这一步有问题,怎么解决? } //数据已经完成的时候执行shutdownOutput s.shutdownOutput(); InputStream is = s.getInputStream(); byte[] bufin = new byte[1024]; int lenin = is.read(bufin); System.out.println(new String(bufin,0,lenin)); fis.close(); s.close(); }}/**线程*/class UploadThread implements Runnable{ private Socket s; UploadThread(Socket S) { this.s = s; } public void run() { int count = 1; String ip = "111"; try { System.out.println(ip+"连接"); InputStream is = 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 = is.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+"上传失败"+e); } }}/**服务器端*/class UploadServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(4444); while(true) { Socket s = ss.accept(); new Thread(new UploadThread(s)).start(); } }}
相关文章推荐
- Java网络编程实践和总结 --- 基于TCP的Socket编程之实现文件上传和下载服务
- JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录
- 11级_Java_曹建波 9.13 Tcp实现上传文件和图片
- JSch - Java实现的SFTP(文件上传详解篇) [转载]
- Java代码实现文件上传(转载)
- JAVA基础再回首(二十九)——TCP传输、上传文件、上传图片、多并发上传
- JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录
- Java动态显示文件上传进度的简单实现
- java web 利用 commons-fileupload-1.2 实现文件上传 解决 中文乱码& 非文件属性的读取
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- Firefox下拖拽客户端文件到浏览器达到上传效果的实现(java例)
- Java实现文件的上传 推荐
- Java动态显示文件上传进度的简单实现
- !JAVA学习提高之---- Struts实现多文件上传
- java实现的ftp文件上传例题
- Flex+java实现文件上传
- JAVA上传文件进度条的实现
- java实现大文件的上传
- jQuery教程(十二)使用不苛刻的java script代码实现多文件上传
- Java动态显示文件上传进度的简单实现