java实现两台计算机的互联,如何用Java语言实现两台计算机之间的文件传输?

最近新学习了Java语言,算是一个小白,想用TCP Socket进行网络编程,使得服务器端接受客户端的文件,但是遇到了一个错误,有人知道该怎么解决吗?

//这是服务器端的代码

public class UploadServer {

public static void main(String[] args) {

System.out.println("服务器端运行...");

try {

//创建一个ServerSocket监听8080端口的客户端请求

ServerSocket serverSocket = new ServerSocket(8080);

//使用accept()阻塞当前线程,等待客户端请求

Socket socket = serverSocket.accept();

//由Socket获得输入流,并创建缓冲输入流

BufferedInputStream in = new BufferedInputStream(socket.getInputStream());

//由文件输出流创建缓冲输出流

FileOutputStream out = new FileOutputStream("G:\站点\新建文本文档.txt");

//创建一个缓冲区

byte[] buffer = new byte[1024];

//首次向Socket读取数据

int len = in.read(buffer);

while (len != -1) {

//写入数据到文件

out.write(buffer, 0, len);

//再次从Socket读取数据

len = in.read(buffer);

}

System.out.println("接收完成!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

//这是客户端的代码

public class UploadClient {

public static void main(String[] args) {

System.out.println("客户端运行...");

try {

//向非本机的8080客户端发出请求

Socket socket = new Socket("192.168.0.106",8080);

//由Socket获得输出流,并创建缓冲输出流

BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());

//创建文件输入流

FileInputStream fin = new FileInputStream("F:\站点\新建文本文档.txt");

//由文件输入流创建缓冲输出流

BufferedInputStream in = new BufferedInputStream(fin);

//准备一个缓冲区

byte[] buffer = new byte[1024];

//首次读取文件

int len = in.read(buffer);

while(len != -1) {

//数据写入Socket

out.write(buffer,0,len);

//再次读取文件

len = in.read(buffer);

}

System.out.println("上传成功!");

} catch(ConnectException e) {

System.out.println("服务器未启动!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

先运行服务器端,在运行客户端

客户端显示:

7fa9564869752e7dbe3abdef88f96491.png

服务器端显示:

f2a439043b5b6cfe6f68ed2f1b69d0f9.png

服务器端的第27行是 int len = in.read(buffer);

该如何处理这个异常呢,求解!!!

回答

客户端传输完成后关闭输出流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影

本文小编给大家分享的是腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影。相比其它的视频客户端,腾讯视频的多维度筛选,大数据比对,更有利于用户发现和推荐自己喜爱的影视剧内容。腾讯视频播放器推荐精准,越用越懂你&…

c++ ea 代码 生成_EA公司教AI制作游戏角色,行动流畅自然,全程无需人类介入

想开发出一款爆款游戏,是一件难度极高的事情,不仅要有精妙的内容设计,精致的光影效果,自然的动画建模,还要投入相当多的资金和时间。现在,美国游戏公司艺电(EA)正在与加拿大不列颠哥伦比亚大学(UBC)合作&am…

@async 没有异步_玩转javascript异步编程

一般知道,js脚步语言的执行环境是单线程的,就是它会等一个任务完成,才会进行第二个任务,然后一直向下进行,这样的执行环境简单,但是处理不了复杂的运用,当一个请求需要非常旧的时间的时候&#…

暴露的全局方法_期末考试快到了,这4种错误的考试复习方法,越复习越差劲!...

还有几周就要期末考试了,在考试之前一定要做好全面的复习,只有复习到位,把所学知识都巩固了,那么才能给考出好成绩。在复习的时候不同学生复习方法不同,但有些方法不但费时费力还没有效果。孩子在复习时则要尽量避免。…

python系统目录_Python创建系统目录的方法

本文实例讲述了Python创建系统目录的方法。分享给大家供大家参考。具体如下:Python2 mkdir在没有上级目录时创建会失败.该方法可以创建多级目录。/temp/gapgers/upload/images/1.png如过temp文件夹不存在,会创建空的文件夹/temp/gapgers/upload/images/以…

etl报表开发是什么意思_中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?...

在数据库中有一类用于保存中间计算结果的物理表,通常被称为“中间表”。中间表主要跟 OLAP(在线联机分析)业务有关,产生的原因主要有以下几方面。中间表来源1. 计算逻辑复杂在 OLAP(报表或查询)业务中&…

追加一列 python_常用的python代码总结

使用pandas读取csv文件import pandas as pddf pd.read_csv("nodes.csv")a df.iloc[j]["x"] # 得到第j行标头为x的值 b df.loc[j]["x"] # 得到index为j的标头为x的值ids df["id"].values.tolist() # 得到标头为id的一列&#xff0c…

socketmq 设置队列大小_[译] TCP的SYN队列和Accept队列

关于两个队列首先我们必须明白,处于“LISTENING”状态的TCP socket,有两个独立的队列:SYN队列(SYN Queue)Accept队列(Accept Queue)这两个术语有时也被称为“reqsk_queue”,“ACK ba…

can总线报文是固定的吗_新能源汽车CAN总线Bus Off处理流程

CAN总线由其高可靠和实时性被广泛应用于新能源汽车、轨道交通、医疗、工程机械等行业,本文介绍CAN总线关闭对新能源汽车的功能和安全性能产生的影响,并针对工程师关注的问题,提供有效的解决方案。2020年10月28日全球汽车峰会中展示了未来新能…

java生日正则表达式_Java编程基础15——正则表达式常用工具类

1_正则表达式的概述和简单使用A:正则表达式是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的B:案例演示需求&#…

jsplumb拖线_基于jsplumb插件制作可拖拽、保存流程图、重绘保存后的流程图总结...

1.重点参考博文https://blog.csdn.net/j_bean/article/details/780926472.关键点总结1)实现可视区域图形画满后,拖动整个画布的效果a.最好不要给画图形的容器预设置很大的宽、高,这样遇到钻牛角尖的用户还是会将画布拖到边界。b.换个思维,拖动…

PP视频如何更改截图保存路径及图片类型

这篇文章主要说的是PP视频如何更改截图保存路径及图片类型,希望可以帮助大家。PP视频采用了先进的P2P流媒体播放技术,PP视频可以确保在大量用户同时观看节目的情况下,节目依然流畅清晰。PP视频是一个高品质的视频网站,PP视频依靠独…

win连接被远程计算机终止,windows系统远程连接后马上断开提示“远程计算机已结束连接”的解决方法...

原标题:windows系统远程连接后马上断开提示“远程计算机已结束连接”的解决方法此问题在远程系统是GHOST版的windowsxp和winserver2003时出现的比较普遍。现象描述:用windowsxp自带的“远程桌面”功能连接到另外一台windowsxp电脑时,在连接的…

搜狐视频怎么开启青少年模式

很多人都使用搜狐视频,播放器家园网小编给大家分享一下搜狐视频怎么开启青少年模式相关内容。搜狐视频播放器是一款深受广大用户欢迎的主流视频播放器软件,专注为用户提供在线视频播放的客户端软件,搜狐视频播放器为用户提供清晰、流畅、界面…

使用中断后不停止_乔丹体育公司构成侵权,为何又不判令彻底停止使用“乔丹”注册商标?法院解释来了...

2020年12月30日,上海二中院发布了迈克尔•乔丹姓名权纠纷案一审判决结果,引发社会各界广泛关注。现就大家关注的若干问题作如下释疑:1. 为何认定乔丹体育公司构成侵权乔丹体育公司是在明知迈克尔•乔丹具有较高知名度的情况下,仍然…

如何在家访问公司的文件服务器,企业的共享文件,该怎么高效管理?

原标题:企业的共享文件,该怎么高效管理?现在的企业基本上都有自己的文件服务器,并且会经常共享文件让局域网内用户访问。而企业的网络服务器共享文件是企业的无形资产和商业保密信息,员工也经常根据网络服务器来远程控…

roads 用户体验标准_全球领先技术加持,联发科 天玑1000+刷新5G用户体验新标准...

随着5G基站的一步步铺建,越来越多的地方都逐渐可以接收到5G信号了。这自然也催促着芯片厂商尽快推出全新的5G移动平台,比如骁龙的X55基带、华为的巴龙5000基带等。但在目前的环境下,尽管这些基带的加入让手机移动平台能够支持5G网络&#xff…

window系统服务器改名,微软:不会将 Windows Server 改名为 Microsoft Server 系统

原标题:微软:不会将 Windows Server 改名为 Microsoft Server 系统IT之家 4 月 18 日消息 外媒 MSPoweruser 报道,微软已经迅速行动,粉碎了一个传闻,此前有消息称,微软正计划将 Windows Server 更名为 Micr…

腾讯视频视频下载_如何下载腾讯视频

今天继续给大家分享腾讯视频方面的内容。一般来说vip会员可以提前点播热播剧,对于追剧党来说是非常好的,不过是否开通也要根据自己需求,毕竟价格也不低啊,而且还是有一些用户能够通过一些简单但不值得提倡的方法看遍全网vip资源电…

deebot扫地机器人使用_完美主义的双子座也选这款扫地机——小米米家扫地机器人使用心得...

赵女士是一枚85后,热爱生活、完美主义、中度洁癖。自从搬了新家后,赵女士一直想添置一台扫地机器人,一方面,孩子经常喜欢赤脚在家中玩耍,另一方面,白天上班晚上回来打扫卫生总显得有些心有余而力不足&#…