局域网内服务端提供一个目录,客户端选择指定文件并进行下载
来源:互联网 发布:三维人像建模软件 编辑:程序博客网 时间:2024/05/29 13:10
package com.softeem.example.ftp;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.TreeMap;public class FtpServer extends Thread{private File dir;// 需要被共享的目录private Socket s;// 当前链接的客户端public FtpServer(File dir, Socket s) {super();this.dir = dir;this.s = s;}@Overridepublic void run() {//1.将目录中文件列表传输到客户端sendList();}private void sendList(){//列出目录中所有的文件名称String[] filesName = dir.list();//将文件名以键值对形式存储到map集合中TreeMap<Integer,String> files = new TreeMap<>();for (int i = 0; i < filesName.length; i++) {files.put(i+1, filesName[i]);}try {//获取基于Socket的对象输出流(通过socket向客户端发送文件列表)ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());oos.writeObject(files);oos.flush();//接收指令receiveCommond(files);} catch (IOException e) {e.printStackTrace();}}//接受指令private void receiveCommond(TreeMap<Integer,String> files) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));String s = br.readLine();int fno = Integer.parseInt(s);String fname = files.get(fno);//根据共享目录以及客户端需要下载文件名,创建File对象File source = new File(dir,fname);//发送文件trasFile(source);}//传输文件private void trasFile(File source) throws IOException{System.out.println("开始传输...");//获取源文件的输入流BufferedInputStream bis = new BufferedInputStream(new FileInputStream(source));//获取socket的输出BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());byte[] b = new byte[1024];int len = 0;while((len = bis.read(b)) != -1){bos.write(b, 0, len);}bis.close();bos.close();System.out.println("传输完成!");}public static void main(String[] args) {try {//声明被共享的目录对象File dir = new File("D:\\素材\\视频\\larva搞笑虫子");System.out.println("服务器已启动...");ServerSocket ss = new ServerSocket(5678);Socket s = null;while(true){//7*24h监听客户端链接s = ss.accept();System.out.println("客户端已连接,开始提供服务:"+s.getInetAddress().getHostAddress());//针对没一个链接的Socket对象单独开启一个线程提供文件共享服务new FtpServer(dir, s).start();;}} catch (IOException e) {e.printStackTrace();}}}
阅读全文
0 0
- 局域网内服务端提供一个目录,客户端选择指定文件并进行下载
- 服务端客户端文件下载
- 局域网内如何通过一个oracle客户端连接另一个oracle服务端
- 从服务器下载文件源代码(含客户端目录选择)
- 列出指定文件的目录和文件,并进行缩进
- 利用WGET下载文件,并保存到指定目录
- 利用WGET下载文件,并保存到指定目录
- 监控客户端目录并同步到服务端
- 10.获取客户端指定路径下的文件目录,并传输至服务器端--客户端
- win下局域网内下载文件
- (死亡历险)Delphi7 IdTCPClient1,IdTCPServer1客户端向服务端发送指令进行文件下载
- ftp下载指定目录指定文件
- VBA遍历当前目录下指定类型的excel文件并复制文件内指定的内容到新表中
- 10.获取客户端指定路径下的文件目录,并传输至服务器端--服务器端
- Linux使用rsync客户端与服务端同步目录进行备份
- linux使用rsync客户端与服务端同步目录进行备份
- 遍历指定目录内的文件
- ngx提供文件下载并加密
- 2017/7/30
- 九、Java中变量的使用规则
- pandas官方文档中cookbook(3)的selection&new column&multiindexing翻译
- uva 1225 Digit Counting
- linked-list-cycle-ii
- 局域网内服务端提供一个目录,客户端选择指定文件并进行下载
- linux下c++sleep函数
- Git常用操作系列(2)
- bzoj2391Cirno的忧郁 treap+三角剖分
- Java基础
- static(静态)变量
- C#和C++中类实例化的差异——从C#到C++爬坑ing
- 题目1490:字符串链接
- MyBatis基本操作