由于最近要写个仿聊天程序中文件传输的内容,又学习了一下流的知识
找了好久没找到很全的,后来不知道哪个地方找了个不错的客户端和服务器端的代码,自己改了下,感觉还行吧。放到博客上来帮助记忆
服务器端:
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();
}
}