TCP通信文件上传_接收端给出反馈

要求如下 客户端:数据来自于文本文件,且接收来自接收端的反馈。客户端即发送端 服务器:接收到的数据写入文本文件,且向发送端给出反馈。服务端即接收端

注意:发送端的数据来自'a_13_3文本.txt',接收端的数据会写入到'a_15_3文本.txt' 注意:'a_13_3文本.txt'是已存在的,'a_15_3文本.txt'是系统帮我们创建的

相当于实现了文件上传,即把你的文件发给你的同桌

 

如何解决文本里面出现了结束标记字眼时,位于结束标记后面的文本数据将不会被执行的问题,解决如下 shutdownInput() 将此套接字的输入流放在“流结束” shutdownOutput() 禁用此套接字的输出流 简单理解就是,不需要我们使用结束标记来终止接收端的接收,Socket类里面已经提供了两个用于标记的方法 原理:发送端在方式数据时,会把结束标记也发出去,当接收端接收数据完成后会接收到这个结束标记,接收到结束标记接收端就会关闭接收,避免了接收端一直等待

 

总结:当出现程序一直等待的问题时,原因是:读数据的方法是阻塞式的。解决方式有两种,如下 1、自定义结束标记,但是这种方式会带来另一个问题,当文本数据出现'自定义结束标记'字眼会被接收端认为文本数据已经接收完了,所以后面的数据就没有继续接收 2、使用shutdownOutput方法,这种方式解决起来比较便捷,只需要在发送端写就行

 

TCP通信文件上传_接收端给出反馈的练习

 

TCP通信文件上传_多线程

要求如下 客户端:数据来自于文本文件,且接收服务器反馈。客户端即发送端 服务器:接收到的数据写入文本文件,且向发送端给出反馈,其中,代码用线程进行封装,为每一个客户端开启一个线程。服务端即接收端\

注意:发送端的数据来自'a_13_3文本.txt',接收端的数据会写入到'a_16_4文本.txt' 注意:'a_13_3文本.txt'是已存在的,'a_16_4文本.txt'是系统帮我们创建的

如何运行:先运行'a_16_2测试接收',再运行'a_16_1测试发送'

 

TCP通信文件上传_多线程的练习