java网络编程----tdp进阶篇上传文本文件

     2022-03-18     262

关键词:

设计需求:从客户端上传txt文件到服务器,服务端收到文件后,发送消息给客户端接收完成。

1. 服务器端:

public class UpLoadFileServer {

public static void main(String[] args) throws Exception {

ServerSocket ss = new ServerSocket(10010);

Socket s =ss.accept();

BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));

BufferedWriter bufw =new BufferedWriter(new FileWriter("D:\server.txt"));

String line1 =null;

while((line1=bufin.readLine())!=null)
{
bufw.write(line1,0,line1.length());
}

System.out.println("服务端接收完了。。。。");
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("上传成功");
System.out.println("服务端反馈客户端完了。。。。");

bufw.close();


s.close();
ss.close();

}
}

2. 客户端:

public class UploadFileClient {

public static void main(String[] args) throws Exception {

Socket s = new Socket("192.168.5.163",10010);

File file =new File("d:\1.txt");

BufferedReader buffer =new BufferedReader(new FileReader(file));

PrintWriter out = new PrintWriter(s.getOutputStream(),true);

String line =null;

while((line=buffer.readLine())!=null)
{
out.println(line);
System.out.println("客户端读取文件里的内容"+line);
}

System.out.println("客户端发完了 。。。。。");
BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
s.shutdownOutput();
String result=bufin.readLine();
System.out.println("客户端接收到了服务器的数据了 。。。。。");
System.out.println(result);

buffer.close();
s.close();
}
}

   小总结:之前运行一直不成功,进行调试发现,是客户端这边数据已经传输完了,但是服务器端还一直在等待客户端继续传递数据过来,而且一直没有把接收到的数据写到文件内。后在客户端增加:s.shutdownOutput();就能成功上传文件。

用java网络编程中的tcp方式上传文本文件及出现的小问题

  自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用。  首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服... 查看详情

java高级工程师进阶学习:kafka应用场景

三大内容:Java并发编程Java高并发编程高并发系统设计Java并发编程1.概览2.进程与线程3.Java线程4.共享模型之管程5.共享模型之内存6.共享模型之无锁7.共享模型之不可变8.共享模型之工具并发编程—模式篇:并发编程—应用... 查看详情

java-进阶篇面向对象进阶

Java-进阶篇【面向对象进阶】 查看详情

springcloud-zuul进阶篇

...,读者都懂得如何简单的使用zuul进行路由网关配置,在进阶篇中你将获得zuul核心功能过滤器的基本使用,通过zuul实现文件上传等;二管理端点默认情况下使用@EnableZuulProxy注解和SpringBootActuator集成方式会有两个端点Routes和Filters... 查看详情

java进阶篇之抽象(代码片段)

Java编程之面向抽象本篇内容:1.抽象的引入2.抽象在Java中的作用3.应用场景4.小结1.抽象的引入        抽象即没有任何具体的实际内容,一般是共有的属性或行为。比如:描述一个人(对象),每个人... 查看详情

java进阶篇之接口(代码片段)

Java编程之面向接口本篇内容:1.接口的引入2.接口的实现3.抽象类与接口的区别4.小结1.接口的引入         接口,类似于实际生活中的插座接口,只要你的插头符合接口的规范,比如大小、形状等,那么你... 查看详情

java进阶篇之接口(代码片段)

Java编程之面向接口本篇内容:1.接口的引入2.接口的实现3.抽象类与接口的区别4.小结1.接口的引入         接口,类似于实际生活中的插座接口,只要你的插头符合接口的规范,比如大小、形状等,那么你... 查看详情

java代码审计任意文件上传篇

一、文件上传方式(常见)通过文件流方式上传;通过ServletFileUpload方式上传;通过MultipartFile方式上传1、通过文件流方式进行上传publicStringfileUpload(@RequestParam("file")CommonsMultipartFilefile)throwsIOExceptionlongstartTime=System.currentTimeMillis();System.ou... 查看详情

java刷题进阶基础入门篇(代码片段)

...网大厂面试真题,成体系的分类题库,从入门到进阶,分类练习哦!文章目录🌕前 查看详情

java基础篇—文件上传下载

/index.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">&l 查看详情

编程挑战javascript进阶篇(慕课网题目)

编程挑战现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果。效果图:文字素材:房产:  275万购昌平邻铁三居总价20万买一居  200万内购五环三居140万安家东三环  北京首现零首付楼盘53万购东5环5... 查看详情

数组使用---进阶编程篇

本篇文章讲解数组的使用,先是介绍下几种不同的数组,在说明下各自的区别和使用场景,然后注意细节,废话不多说,赶紧上代码。在.Net3.5之中,我们常用的数组基本就是如下的几种方式(词典Dictionary<TKey,TValue>比较特殊... 查看详情

运行机制---进阶编程篇

    我已经假定你安装了宇宙第一IDE:visualstudio2017版本了,一个好的IDE会让你在敲代码的时候获得一个好心情,想想多年以前,很多人还是用VC++6.0,估计在现在,还是有一部分的人在使用,那个IDE用起来非常的不... 查看详情

字符编码---进阶编程篇

本篇文章讲解各种字符编码的使用和区别,使用上来说,几乎都是一致的,理解了底层的字符编码,对于构建跨平台应用来说,是至关注重要的。再C#中,包含了一下几种主流的字符编码,也是目前为止,用的最多的字符编码了... 查看详情

网络传输进阶篇----并发

一、并发是什么?较为通俗的去理解并发这件事情本身,这就要牵扯到计算机的发展。我再这笼统的概括,在网上能够找到十分详细的计算机发展史。?https://blog.csdn.net/zzwu/article/details/77792789——请参见大佬的文章?在计算及一开始... 查看详情

文件包含漏洞进阶篇

...到火候。这次在度深入了解。目录:本地文件包含漏洞的进阶远程文件包含漏洞正文: 进入之后选择文件包含漏洞,如下图所示 【图一】进去一看,明显的文件包含漏洞。 尝试包含本地存在的phpinfo.php使用file协议进... 查看详情

类的使用---进阶编程篇

  很多讲解编程的书籍在介绍类的时候就直接介绍属性,字段,方法,事件等等,然后说下多态性,继承性,等等,所有的这些东西对于初学者来说实在是虚无缥缈,对于什么地方该用类,该怎么设计类仍然是很模糊的,需要... 查看详情

javascript进阶篇——(dom—节点---插入删除和替换元素创建元素创建文本节点)—笔记整理

插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点。语法:appendChild(newnode)//参数://newnode:指定追加的节点。为ul添加一个li,设置li内容为PHP,代码如下:1<!DOCTYPEHTML>2<html>3<head>4<metahttp-equ... 查看详情