📄 test5server.java
字号:
import java.io.*;
import java.net.*;
/*
编写一个基于TCP的文件传输程序,要求文件名作为程序的参数输入或者在执行程序的过程中输入。
每次传输的数据不能超过100个字节。即如果文件的字节数超过100个字节时,需要将文件分割再发送;
当接收到数据时,需要将数据重新封装到一个文件中。
*/
public class test5Server
{
public static void main(String[] args)throws Exception
{
System.out.println("服务器已经成功启动,等待客户确认连接。。。。。。");
ServerSocket ss=new ServerSocket(7000);//创建文件流用来读取文件中的数据,监听的端口为:7000
Socket client=ss.accept();
String s;//用来接收文件名
int i=0;
System.out.println("客户端确认连接,请输入要传输的文件(包括后缀名):");
InputStreamReader in=new InputStreamReader(System.in);
BufferedReader bf=new BufferedReader(in);
s=bf.readLine();//获得文件名
FileInputStream fn=new FileInputStream(new File(s)); //获取文件
OutputStream get=new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
byte[] buf=new byte[100]; //创建文件读取缓冲区,每次只能读取100个字节
int num=fn.read(buf);
while(num!=(-1))//判断是否读完文件
{
i=i+100;
get.write(buf,0,num);//把文件数据写出缓冲区
get.flush();//刷新缓冲区把数据写往客户端
System.out.println("第"+i+"个字节发送完成");
num=fn.read(buf);//继续从文件中读取数据
}
fn.close();
get.close();
System.out.println("\n文件发送完成,程序退出");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -