Ftp文件上传的实现
来源:互联网 发布:python socket通信框架 编辑:程序博客网 时间:2024/05/22 07:41
客户端
package question10;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.Socket;/* * 使用TCP协议写一个可以上传文件的服务器和客户端。 * * 客户端类 * * 老师运行完要F5刷新下项目 */public class FTPClient{public static void main(String[] args) throws Exception{//链接服务器,127.0.0.1表示本机,5678为端口号Socket socket = new Socket("127.0.0.1", 5678);System.out.println("conneted server");//需要上传的文件路径,这里是当前这个java源文件String path = System.getProperty("user.dir")+File.separator+"src"+File.separator+"question10"+File.separator+"FTPClient.java";//根据路径链接到本机文件系统File file = new File(path);//取得到服务器的输出流,用来写入数据DataOutputStream dos = new DataOutputStream(socket.getOutputStream());System.out.println("start write");writeHead(dos, file);writeFile(dos, file);System.out.println("write finished");}/** * 写传输头,这里只是文件名字 */public static void writeHead(DataOutputStream dos, File file) throws IOException{dos.writeUTF(file.getName());dos.flush();}/** * 读取文件并传输给服务器 */public static void writeFile(DataOutputStream dos, File file) throws IOException{DataInputStream dis = new DataInputStream(new FileInputStream(file));//超过两个G的文件会出问题,获取不到准确的大小//并且dis.available() > 0表达式也不能正确//工作dos.writeInt(dis.available());System.out.println("file size " + dis.available() + " bytes");while(dis.available() > 0){dos.write(dis.read());}dos.flush();}}
服务器
package question10;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/* * 使用TCP协议写一个可以上传文件的服务器和客户端。 * * 服务器类 * * 老师运行完要F5刷新下项目 */public class FTPServer{public static void main(String[] args) throws Exception{//启动服务器,并监听5678端口的链接请求ServerSocket ss = new ServerSocket(5678);Socket client = ss.accept();System.out.println("client conneted");//建立到客户端的输入流,用以读取数据DataInputStream dis = new DataInputStream(client.getInputStream());//读取数据头,即文件名String fileName = readHead(dis);System.out.println("start read " + fileName);//服务器将要保存从客户端上传的文件的路径//这里是当前这个服务器java源文件的所在目录//传完F5刷新下项目String path = System.getProperty("user.dir")+File.separator+"src"+File.separator+"question10"+File.separator;//给保存的文件加了点东西,要不就把这个客户端//那个java源文件给覆盖了,看不出来效果File file = new File(path + fileName.replace(".", "$1."));readFile(dis, file);System.out.println("read finished");}/** * 读取并返回数据头,也就是文件名字 */public static String readHead(DataInputStream dis) throws IOException{return dis.readUTF();}/** * 读取客户端传来的文件数据并写入本地文件 */public static void readFile(DataInputStream dis, File file) throws IOException{//取得文件大小int length = dis.readInt();//将文件数据写如本地文件DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));//创建文件file.createNewFile();for (int i = 0; i < length; i++) { dos.write(dis.read()); }}}
- Ftp文件上传的实现
- 采用FTP协议实现文件的上传
- java实现的ftp文件上传例题
- java实现的ftp文件上传例题
- 实现FTP的文件上传与下载
- ftp实现文件的上传和下载
- Boost实现FTP上传文件
- Java实现ftp上传文件
- java实现ftp文件上传
- java实现FTP上传文件
- ftp实现文件上传(下载)
- ftp文件上传功能实现
- VC实现FTP定时上传文件的实现
- 利用edtftpj组件实现FTP文件的上传
- 利用edtftpj组件实现FTP文件的上传。
- JAVA实现FTP服务器文件的上传,下载,删除功能
- Java 实现ftp文件的上传和下载
- ftp上传和下载文件的java实现
- 【Java核心技术】CipherInputStream与CipherOutputStream 加密流2
- 读取文本文件,并为每一行增加行号
- JAVA隐藏鼠标的方法
- 面试题目---C语言可变参数函数的实现
- 使用gimp画线、矩形、圆等
- Ftp文件上传的实现
- 面试题目---小字节序、大字节序、程序判断
- GEF实战:图形之基本图形
- 《STL源码剖析》-- stl_vector.h
- Android中 Js 扩展及交互
- ThinkPHP 自动验证与自动填充无效可能的原因
- c++构造函数
- webkit的js对象扩展(二)——binding方式创建自定义对象(多实例)
- C语言编译流程