java TCP并发实现文件上传---转载(PS:适合java1.6之前)

/**

客户端

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();

}

}

}

时间: 2024-10-21 14:08:29

java TCP并发实现文件上传---转载(PS:适合java1.6之前)的相关文章

用c++开发基于tcp协议的文件上传功能

用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学阅读,比 APUE 讲的更深入 这是某个银行广告项目(p2p传输视频)的一部分 IO模型采用的阻塞模式,文件一打开就直接上传 用vc 2003编译,生成win32 dll 麻雀虽小五脏俱全,CSimpleSocket,CReadStream dll 输出一虚类 extern "C" __d

Java代码实现文件上传(转载)

刚刚发表了一篇Java发送电子邮件,以前真是没注意,commons里这么多常用项目,惭愧呀,直到现在回顾;要学习的真是太多了,还是缺少真正的学习能力... 这里用到的是commons-fileupload.jar与commons-io.jar;下载地址http://commons.apache.org/ 这是一个web工程,所以先在webroot下新建一个jsp,其实直接用index.jsp就行了;下面是前端代码: <%@ page language="java" import=

Java 利用 SWFUpload多文件上传 session 为空失效,不能验证的问题

原文转自:http://www.tqcto.com/article/code/295299.html 我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jquery form.js可以达到异步上传的目的,但最重要的问题在于,它不能够进行多个文件的上传.如果你要上传多个文件,必须一个一个地上传,同时还要在界面上处理当上传完一个文件之后,下一个文件上传框的问题.    现在我们有了一个更多的运行,即使用swfupload进行多文件异步上传.顾名思义

selenium+java利用AutoIT实现文件上传

1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传. 备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT. 3.自动化调用 AutoIT脚本编译成可执行文件后,放到本地的某一个目录下 自动化实现过程中,需要上传图片时,首先定位到[上传

普通的java Ftp客户端的文件上传

关于ftp上传文件其实并不难,但有时候面对现实的环境还是很蛋疼的,今天我就分享一下,普通的上传文件文件至FTP的方式,它满足大部分FTP,但也有特别的,下篇博客会提及到. 下面我用一个FtpUtil,来实现各种功能: 我们这里的主要功能是: 把本地文件夹下的文件上传到ftp的一个文件夹下 ,如果上传成功,就把上传成功的文件备份到另一个文件夹下,如果备份成功,就可以拿备份成功的文件删除了. 直接上代码了! package cn.tendency.utils; import java.io.File

Java Web开发之文件上传

文件上传有SmartUpload.Apache的Commons fileupload.我们今天介绍Commons fileupload的用法. 1.commons-io.jar 和commons-fileupload-1.3.1.jar 下载地址:http://pan.baidu.com/s/1kVtYMzH 2.web.xml 1 <!-- 上传文件 服务器端 --> 2 <servlet> 3 <servlet-name>UploadServlet</serv

Java jsp servlet 实现文件上传 最简单操作

|--实现文件上传的方式 1.进入http://commons.apache.org/proper/commons-fileupload/using.html 2.点击用户指南 3.对着用户指南一步步复制粘贴,并把代码撸成自己想要的样子 补充:记得要将commons-io-2.4.jar和commons-fileupload-1.2.2.jar这两个包放到编译器里面 |--现成的代码 1 <%-- 2 Created by IntelliJ IDEA. 3 User: Administrator

java servlet 3.0文件上传

在以前,处理文件上传是一个很痛苦的事情,大都借助于开源的上传组件,诸如commons fileupload等.现在好了,很方便,便捷到比那些组件都方便至极.以前的HTML端上传表单不用改变什么,还是一样的multipart/form-data MIME类型. 让Servlet支持上传,需要做两件事情 需要添加MultipartConfig注解 从request对象中获取Part文件对象 但在具体实践中,还是有一些细节处理,诸如设置上传文件的最大值,上传文件的保存路径. 需要熟悉Multipart

java jsp Struts2.X 文件上传

/** * *操作系统:WIN-XP *后台程序:Java *前端脚本:JavaScript/ExtJs/Html * *做过的尝试:用form的submit方式提交,在后台request.getInputStream()取到的值*为null,而*request.getContentLength()是可以正常取值的.用request.getRead()抛出错误,request has been *called 网查之后得知,似乎是Struts过滤掉了.另寻他法于是便有了下面代码. */ @Par