采用socket传输文件

客户端输入文件的地址,服务端判断文件存在,就将文件传输到客户端

package com.fly.socket;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class Server { public static void main(String[] args) { try {
int i=;
ServerSocket serverSocket=new ServerSocket();
while(true){
System.out.println("服务器已启动!");
Socket socket =serverSocket.accept();
Thread thread=new Thread(new ThreadHandler(socket),"Thread-"+i++);
thread.start();
} } catch (IOException e) {
e.printStackTrace();
}
}
} class ThreadHandler implements Runnable {
private Socket socket; public ThreadHandler(Socket socket) {
this.socket = socket;
} @Override
public void run() {
DataOutputStream dataOutputStream=null;
DataInputStream dataInputStream=null;
DataInputStream localRead =null;
try {
dataOutputStream=new DataOutputStream(socket.getOutputStream());
dataInputStream=new DataInputStream(new BufferedInputStream(socket.getInputStream())); String filePath = dataInputStream.readUTF();
File file=new File(filePath);
//判断文件是否存在
if(!file.exists()){
return;
}else{
//文件名
String fileName = file.getName();
dataOutputStream.writeUTF(fileName);
dataOutputStream.flush();
//文件大小
long length = file.length();
dataOutputStream.writeUTF(String.valueOf(length));
dataOutputStream.flush(); System.out.println("开始向 "+Thread.currentThread().getName()+
" 发送文件,文件名:"+fileName+" 文件大小"+length);
localRead =new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
byte[] bytes=new byte[];
while (true){
int read=;
if(localRead!=null){
read = localRead.read(bytes);
}
if(read==-){
break;
}
dataOutputStream.write(bytes,,read);
dataOutputStream.flush();
}
System.out.println("向 "+Thread.currentThread().getName()+" 发送文件完毕!");
} } catch (IOException e) {
e.printStackTrace();
}finally {
try {
localRead.close();
dataOutputStream.close();
dataInputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
package com.fly.socket;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.Scanner; public class Client { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
DataInputStream dateInputStream=null;
DataOutputStream dataOutputStream=null;
DataOutputStream localWrite=null;
Socket socket=null;
try {
socket=new Socket();
SocketAddress address = new InetSocketAddress("127.0.0.1", );
socket.connect(address);
//输入流
dateInputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
//输出流
dataOutputStream = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
System.out.println("请输入文件路径:");
String filePath = in.next();
dataOutputStream.writeUTF(filePath);
dataOutputStream.flush(); String fileName = dateInputStream.readUTF();
String length=dateInputStream.readUTF();
System.out.println("文件名:"+fileName+" 文件大小:"+length);
localWrite=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("F:/"+fileName)));
byte[] bytes=new byte[];
while (true){
int read=;
if(dateInputStream!=null){
read = dateInputStream.read(bytes);
}
if(read==-){
break;
}
localWrite.write(bytes,,read);
localWrite.flush();
}
System.out.println("文件传输完毕!");
} catch (IOException e) {
e.printStackTrace();
}finally {
in.close();
try {
localWrite.close();
dataOutputStream.close();
dateInputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} } } }

采用socket传输文件的更多相关文章

  1. Java使用Socket传输文件遇到的问题(转)

    1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...

  2. Java使用Socket传输文件遇到的问题

    1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...

  3. python socket 传输文件

    推荐资料 https://www.cnblogs.com/xiaokang01/p/9865724.html socket传输文件 思路: # 先将报头转换成字符串(json.dumps), 再将字符 ...

  4. Java 学习笔记 网络编程 使用Socket传输文件 CS模式

    Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...

  5. Python Socket传输文件

    发送端可以不停的发送新文件,接收端可以不停的接收新文件. 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下: 接收端: 方法一 ...

  6. IOS — 关于Socket传输文件需要自定义延时或者包大小的情况

    1. 首先导入头文件 #include <stdio.h> #include <errno.h> #include <string.h> #include < ...

  7. Linux C++ TCP Socket传输文件或图片实例

    环境:Linux 语言:C++ 通信方式:TCP 下面用TCP协议编写一个简单的服务器.客户端,其中服务器端一直监听本机的6666号端口.如果收到连接请求,将接收请求并接收客户端发来的消息:客户端与服 ...

  8. Java学习笔记——Socket实现文件传输

    我越是逃离,却越是靠近你. 我越是背过脸,却越是看见你. 我从你开始, 我在你结束. 需求:实现局域网下socket传输文件. 客户端步骤: 1.建立与服务器的连接 2.创建client输出流 3.创 ...

  9. 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天

    由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...

随机推荐

  1. [51Nod 1222] - 最小公倍数计数 (..怎么说 枚举题?)

    题面 求∑k=ab∑i=1k∑j=1i[lcm(i,j)==k]\large\sum_{k=a}^b\sum_{i=1}^k\sum_{j=1}^i[lcm(i,j)==k]k=a∑b​i=1∑k​j ...

  2. LeetCode 1079. Letter Tile Possibilities

    原题链接在这里:https://leetcode.com/problems/letter-tile-possibilities/ 题目: You have a set of tiles, where ...

  3. Eclipse 打包运行maven项目

    https://www.cnblogs.com/tangshengwei/p/6341462.html      

  4. mysql 查询账户

    查询 mysql 的存在的账户  >select user,host,password from mysql.user; # 可以查询涉及到user. host 链接权限.密码加密文件.

  5. javascript加密之md5加密

    原作地址:JavaScriptMd5 修改备用:JavaScriptMd5.rar

  6. Win10系统下安装ubuntu16.04双系统-常见问题解答

    Win10系统下安装ubuntu16.04双系统-常见问题解答 1. 安装ubuntu16.04.2系统 磁盘分区形式有两种:GPT和MBR,关系到设置引导项.在win10下压缩出500GB空间给ub ...

  7. magento2重写virtualType并且传参

    今天遇到一个需求需要重写一个block,但是这个block是应用virtualType实现,所以需要先重写virtualType,然后却因为参数丢失而获取不到正确的结果.因此,查阅文档,需要用type ...

  8. 2019_软工实践_Beta(1/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述  检测网站不合理的地方,给组员定下相应时间进度的安排 展示GitHub当 ...

  9. 第10组 Beta冲刺(1/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 tomcat的学习与实现 服务器后端部署,API接口的beta版实现 后端代码 ...

  10. 环境变量path的值大于1024的解决办法

    原文传送门:https://blog.csdn.net/jytxj111/article/details/43916421 1.打开Path,点击默认文本(WIN 10),将所有路径备份下来 2.新建 ...