1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 《Java两台电脑之间传输文件》

《Java两台电脑之间传输文件》

时间:2020-09-01 05:14:58

相关推荐

《Java两台电脑之间传输文件》

开发工具与关键技术:IDEAJava

撰写时间:2021/8/10

讲解一下两台电脑之间通过java代码传输视频文件(在有网络的情况下),我通过TCP协议来完成操作 ,TCP协议要明确哪一台电脑是服务端,哪一台是客户端,服务端负责发送数据,客户端负责接收数据。

一.我首先说客户端的代码怎么写代码图如下

public class ClientDome {public static void main(String[] args) throwsIOException {//这里是客户端Socket s = new Socket("127.0.0.1", 10001);//使用字节缓冲流接收数据//服务器输出数据 ,客户端接收数据保存到数据库中BufferedInputStream bis=new BufferedInputStream(s.getInputStream());BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("shiping.mp4"));byte[] bytes=new byte[8192];int len;while ((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);bos.flush();}BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//输出 反馈给服务器bw.write("我已接收到视频文件");bw.flush();bos.close();s.close();}}

首先我定义了一个Socket类传入两个参数明确服务端的IP地址和端口,然后使用字节缓冲流接收数据,然后把数据读取到当前项目中,所以路径前缀我不需要写了,使用一个字节一个字节数组的方法读取数据,读取完数据以后,要将信息反馈给服务器,表示已经读取完数据,最后关闭流释放资源。

我再来说一下服务端的代码怎么写如图下所示,首先我实例化了ServerSocket类,使用有参构造方法,参数是端点,然后我用这个类的实例化对象ss去调用监听方accept返回

public class ServerDome {public static void main(String[] args) throwsIOException {//服务器接收数据ServerSocket ss=new ServerSocket(10001);Socket s=ss.accept();//读取视频文件 读取 当前类文件路径下的视频文件BufferedInputStream bis=new BufferedInputStream(ServerDome.class.getClassLoader().getResourceAsStream("Cyberpunk 2077.mp4"));BufferedOutputStream bos=new BufferedOutputStream(s.getOutputStream());byte[] bytes=new byte[8192];int len;while ((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);bos.flush();}s.shutdownOutput();BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));//输出 数据System.out.println("客户端:"+br.readLine());bis.close();s.close();}}

一个Socket对象用s声明该返回值,然后首先我用字节缓冲输入流读取到当前这个测试类的根文件路径下的视频文件,读取的同时用字节缓冲输出输出数据给客户端,输出完毕之后一定要用 s调用 shutdownOutput()方法,关闭TCP套接字字符输出流,如果不关闭这里一直会等待数据读取然后输出,然后客户端一边也会一直在等待接收数据,然后就卡在这里了。

最后接收客户端的反馈输出到控制台中,并且关闭流和服务端,释放资源。

最后我在我自己的电脑上给自己的传输文件,在同一台电脑上执行这个操作,首先打服务端,然后再打开客户端。结果如下

如果你想尝试一下传输文件最好拉上自己的好友一起尝试。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。