java学习:基于TCP的网络文件传输(可改写的QQ文件传输)

      由于最近要写个仿聊天程序中文件传输的内容,又学习了一下流的知识

找了好久没找到很全的,后来不知道哪个地方找了个不错的客户端和服务器端的代码,自己改了下,感觉还行吧。放到博客上来帮助记忆

 服务器端:

package TCPexchangeFile;

import java.io.*;
import java.net.*;

public class FileServer {
	public static void main(String[] args) throws Exception {
		// 创建文件流用来读取文件中的数据
		//路径自己想一下或者改一下
		File file = new File("C:\\Users\\admin\\Desktop\\navicat112_mysql_en_x64.exe");
		FileInputStream fis = new FileInputStream(file);

		// 创建网络服务器接受客户请求
		ServerSocket ss = new ServerSocket(8888);
		Socket client = ss.accept();

		// 创建网络输出流并提供数据包装器
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());

		// 创建文件读取缓冲区
		byte[] buf = new byte[2048];
		int num;
		while ((num = fis.read(buf)) != -1) {// 是否读完文件
			dos.write(buf, 0, num);// 把文件数据写出网络缓冲区
			dos.flush();// 刷新缓冲区把数据写往客户端
		}
		fis.close();
		dos.close();
	}
}
客户端

package TCPexchangeFile;

import java.io.*;
import java.net.*;

public class FileServer {
	public static void main(String[] args) throws Exception {
		// 创建文件流用来读取文件中的数据
		//路径自己想一下或者改一下
		File file = new File("C:\\Users\\admin\\Desktop\\navicat112_mysql_en_x64.exe");
		FileInputStream fis = new FileInputStream(file);

		// 创建网络服务器接受客户请求
		ServerSocket ss = new ServerSocket(8888);
		Socket client = ss.accept();

		// 创建网络输出流并提供数据包装器
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());

		// 创建文件读取缓冲区
		byte[] buf = new byte[2048];
		int num;
		while ((num = fis.read(buf)) != -1) {// 是否读完文件
			dos.write(buf, 0, num);// 把文件数据写出网络缓冲区
			dos.flush();// 刷新缓冲区把数据写往客户端
		}
		fis.close();
		dos.close();
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值