📄 server.java
字号:
package Demo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* 服务器 客户端
* 1. 服务器从本地文件系统读取文件
* 2. 服务器创建网络服务连接
* 3. 服务器提供数据包装器
* 4. 服务器将本地文件写入数据包装器
* 5. 服务器通过包装器写入到网络
* 1. 客户端建立新文件准备存储来自网络的数据
* 2. 客户端连接服务器
* 3. 客户端通过网络接受服务器数据并进行数据解包
* 4. 客户端将数据写入缓冲区
* 5. 客户端从缓冲区把数据写入客户本地文件
*
*/
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("server listen to send file .......");
// 创建文件流用来读取文件中的数据
File file = new File("D:"+File.separator+"11.rar");
FileInputStream fos = new FileInputStream(file);
System.out.println("server listening ...");
// 创建网络服务器接受客户请求
ServerSocket ss = new ServerSocket(3108);
Socket client = ss.accept();
// 创建网络输出流并提供数据包装器
OutputStream netOut = client.getOutputStream();
OutputStream doc = new DataOutputStream(new BufferedOutputStream(netOut));
// 创建文件读取缓冲区
byte[] buf = new byte[2048];
int num = fos.read(buf);
while (num != (-1)) {// 是否读完文件
doc.write(buf, 0, num);// 把文件数据写出网络缓冲区
doc.flush();// 刷新缓冲区把数据写往客户端
num = fos.read(buf);// 继续从文件中读取数据
}
fos.close();
doc.close();
System.out.println("server send file complete!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -