java socket实现文件的上传和下载试例
来源:互联网 发布:阿里云搭建http代理 编辑:程序博客网 时间:2024/05/02 00:04
import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;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 ServerScoket {//服务器端int port= 8822;//设置的端口号public void UpFile(){//接受客户端上传的文件,并保存 try { ServerSocket server= new ServerSocket(port); while(true){ Socket socket = server.accept(); DataInputStream is = new DataInputStream(socket.getInputStream()); OutputStream os = socket.getOutputStream(); //1、得到文件名 String filename="E:\\"; filename += is.readUTF(); System.out.println("新生成的文件名为:"+filename); FileOutputStream fos = new FileOutputStream(filename); byte[] b = new byte[1024]; int length = 0; while((length=is.read(b))!=-1){ //2、把socket输入流写到文件输出流中去 fos.write(b, 0, length); } fos.flush(); fos.close(); is.close(); socket.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }public void DownFile(String filePath){//接受客户端的下载请求,将本地文件传输给客户端 try { while (true) {ServerSocket server= new ServerSocket(port); // 选择进行传输的文件 File fi = new File(filePath); System.out.println("文件长度:" + (int) fi.length()); // public Socket accept() throws // IOException侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。 Socket socket = server.accept(); System.out.println("建立socket链接"); /* DataInputStream dis = new DataInputStream(new BufferedInputStream(socket.getInputStream())); dis.readByte(); */ DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath))); DataOutputStream ps = new DataOutputStream(socket.getOutputStream()); //将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工,具体可以参见Think In Java 4th里有现成的代码。 ps.writeUTF(fi.getName()); System.out.println(fi.getName()); ps.flush(); int bufferSize = 8192; byte[] buf = new byte[bufferSize]; while (true) { int read = 0; if (fis != null) { read = fis.read(buf); } if (read == -1) { break; } ps.write(buf, 0, read); } ps.flush(); // 注意关闭socket链接哦,不然客户端会等待server的数据过来, // 直到socket超时,导致数据不完整。 fis.close(); socket.close(); System.out.println("文件传输完成"); } } catch (Exception e) { e.printStackTrace(); } }public static void main(String arg[]) { //String filepath="D:\\test.txt"; new ServerScoket().UpFile(); }}********************************************************************************************************************************************************import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;public class ClientScoket {//客户端private String ip = "localhost";// 设置成服务器IP private int port = 8822;//设置端口号 public void UpFile(String filePath){ //上传文件,将本地文件传输到服务器端 try { Socket socket = new Socket(ip,port); while (true) { // 选择进行传输的文件 File fi = new File(filePath); System.out.println("文件长度:" + (int) fi.length()); /* DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream())); dis.readByte(); */ DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath))); DataOutputStream ps = new DataOutputStream(socket.getOutputStream()); //将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工,具体可以参见Think In Java 4th里有现成的代码。 ps.writeUTF(fi.getName()); ps.flush(); int bufferSize = 8192; byte[] buf = new byte[bufferSize]; while (true) { int read = 0; if (fis != null) { read = fis.read(buf); } if (read == -1) { break; } ps.write(buf, 0, read); } ps.flush(); // 注意关闭socket链接哦,不然客户端会等待server的数据过来, // 直到socket超时,导致数据不完整。 fis.close(); socket.close(); System.out.println("文件传输完成"); } } catch (Exception e) { e.printStackTrace(); } }public void DownFile(){//从服务器端下载文件try { Socket socket = new Socket(ip,port); while(true){ DataInputStream is = new DataInputStream(socket.getInputStream()); OutputStream os = socket.getOutputStream(); //1、得到文件名 String filename="E:\\"; filename += is.readUTF(); System.out.println("新生成的文件名为:"+filename); FileOutputStream fos = new FileOutputStream(filename); byte[] b = new byte[1024]; int length = 0; while((length=is.read(b))!=-1){ //2、把socket输入流写到文件输出流中去 fos.write(b, 0, length); } fos.flush(); fos.close(); is.close(); socket.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String arg[]) {String filepath="D:\\test.txt"; new ClientScoket().UpFile(filepath);; }}
0 0
- java socket实现文件的上传和下载试例
- java socket实现文件的上传和下载试例
- java实现文件的上传和下载
- java实现文件的上传和下载
- java实现文件的上传和下载
- Java网络编程实践和总结 --- 基于TCP的Socket编程之实现文件上传和下载服务
- Java 使用Socket实现文件上传与下载
- Java 实现ftp文件的上传和下载
- ftp上传和下载文件的java实现
- java实现文件上传和下载的后台代码
- ftp上传和下载文件的java实现
- ftp上传和下载文件的java实现
- java实现ftp的文件上传和下载
- FTP下载和上传文件的java实现
- Java连接FTP并且实现文件的上传和下载
- java使用FileUpload实现文件的上传和下载
- java使用FTPClient实现文件的上传和下载
- Python利用Socket实现文件上传和下载
- Jackson入门教程
- 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,
- C语言学习篇-9指针运算、指针与数组
- C语言到c++的第一步 注释转换
- POJ 2688 Cleaning Robot
- java socket实现文件的上传和下载试例
- 两款JSON类库Jackson与JSON-lib的性能对比
- 工厂模式
- Class.forName()用法详解
- linux如何查看系统信息,系统命令
- Picasso入门教程(八)通过Tag()来管理图片
- WebService 的缓存机制
- Trie
- UNIX网络编程 第一章