编程技能强化代码知识点整理

简介: 编程技能强化代码知识点整理

一.网络编程


1.url.ParseURL源代码



运行结果



2.url. URLReader源代码



3.url.URLConnectionReader源代码



4.url. URLdownload源代码


该例子用网络图片的url地址,从网络下载一张图片,并保存在本地硬盘的e盘的images文件夹,图片重命名为“百度1.jsp”



5.发送和接收网络数据


该例子包含两个程序,一个是客户端,用于连接服务器端,发送数据给服务器端,并接收服务器端的数据,实现代码是:



根据上述代码可知,连接的服务器地址是:


http://localhost:8080/ServerWeb/ReverseServlet, 即本地服务器中ServerWeb项目的一个Servlet。该Servlet的作用是接收客户端发送的字符串,反序后,发送回客户端,即客户端发送出一个字符串,收到该字符串的反序。


ServerWeb项目是一个Web项目,其中Servlet中的关键代码是:


request.setCharacterEncoding("utf-8");
String reverseStr = "no string";
String string = request.getParameter("string");//接收客户端传过来的字符串
if(string!=null){
reverseStr=new StringBuffer(string).reverse().toString();//把字符串反序
}
System.out.println(reverseStr);//打印出反序后的字符串
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(reverseStr);//返回给客户端
out.flush();
out.close();


运行时先运行服务器端,然后运行客户端。


客户端结果,输入“你好中国”,接收到反序的字符串:



服务器端结果,启动服务器后,接收到客户端的字符串,并反序打印出来:



6.单客户端和服务器端的案例代码


基于TCP协议的网络编程可以实现C/S结构的程序,C客户端发送数据,S服务器端接收数据后发回给客户端,客户端接收后输出到屏幕。客户端通过创建Socket连接服务器,服务器端监听到连接后,也创建Socket,两端的Socket连在一起,形成一个输出输出流,客户端发送消息,用输出流,服务器端接收消息用输入流,反之亦然。




运行时,先运行服务器端,再运行客户端,在客户端输入数据,发送给服务器,服务器接收后再返回给客户端,客户端接收后打印到屏幕。



7.多客户端和单服务端的案例代码


该例子可以实现多个客户端的聊天室功能,即任何一个客户端发送消息给服务器,服务器会转发给所有与它连接的客户端。因为服务器要维护与多个客户端的连接,这里用线程实现,每个客户端和服务器端连接后,服务器端都会开启一个线程,用于接收当前这个客户端的消息,并转发给所有的客户端。


该例子由3个Java类实现,客户端:tcp. EchoMultiClient,服务器端:tcp. EchoMultiServer,tcp.EchoServerThread(服务器端使用的线程类)。


客户端类,该客户端发送消息和接收消息分别在一个线程中进行:



服务器端代码,该代码中每监听到客户端的一个连接,就调用线程类创建并启动一个线程对象。



服务器端使用的线程类代码:



该程序运行时,先启动服务器端代码,再多次启动客户端。


例如以下运行效果,启动了服务器端后,启动了3次客户端,3个客户端分别发送消息,效果如下:



8.单客户端和服务器端的案例代码


基于UDP协议的网络编程通信原理和TCP协议不同,基于TCP协议的通信是客户端和服务器端建立连接管道,这个管道就像一个输出输出流,发送消息使用输出流,接收消息使用输入流;基于UDP协议的通信不建立连接,一端向另一端发送消息需要创建数据报,数据报中包含目标地址和要发送的内容。


该例实现了客户端向服务器端发送消息,服务器端收到后,提取出内容和客户端的地址,把消息再发回给客户端。




从以上代码可以看出,客户端和服务器端发送和接收消息的原理类似,区别只是服务器端绑定了固定的端口号,而客户端不用绑定固定端口号。


先运行服务器端代码,再运行客户端代码,效果如下:



9.基于UDP的广播数据报的发送和接收


基于UDP协议,可以发送广播数据报,即发送一个数据报出去,目标地址是多台主机。接收广播数据报需要使用MulticastSocket类。


该例的客户端实现了两个线程,一个线程使用DatagramSocket发送数据报给服务器;另一个线程使用MulticastSocket绑定固定端口4446,加入广播地址230.0.0.1,接收来自服务器的广播数据。


该例的服务器端接收到客户端的数据报后,把内容封装成广播数据报,广播地址是230.0.0.1,把广播数据报发送出去。该例的客户端可以接收到。




相关文章
|
1月前
|
测试技术
探索软件测试的奥秘:从基础到进阶
【10月更文挑战第4天】在软件开发的广阔天地中,测试是保证质量的重要关卡。本文将深入浅出地介绍软件测试的核心概念、类型和实践方法,旨在帮助初学者构建起完整的测试知识体系,同时为有经验的测试工程师提供一些深入探索的方向。我们将一同走进测试的世界,解锁那些隐藏在代码背后的奥秘。
|
3月前
|
安全 jenkins Java
探索软件测试的奥秘:从基础到高级
【8月更文挑战第27天】在软件开发的海洋中,测试是确保航行安全的灯塔。本文将带你从软件测试的基本概念出发,逐步深入到自动化测试的世界,最终探索持续集成(CI)和持续部署(CD)的实践。我们将通过实际代码示例,展示如何利用流行的测试框架和工具来提高测试效率和质量。无论你是测试新手还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在软件测试的旅程上更加从容不迫。
|
5月前
|
算法 程序员
程序员必知:XGB算法梳理
程序员必知:XGB算法梳理
31 0
|
6月前
|
存储 算法 Python
学习编程是一个逐步积累的过程
【4月更文挑战第30天】学习编程是一个逐步积累的过程
45 2
|
Cloud Native 程序员 Go
从项目中突显技能:在面试中讲述你的编程故事
从项目中突显技能:在面试中讲述你的编程故事
71 0
|
设计模式 存储 JSON
如何写出一手好代码(上篇 - 理论储备)?
技术能力是研发同学的立身之本,而写代码的能力又是技术能力的重要体现。但可惜的是理想很丰满,现实很骨感。结合慕枫自己的经验来看,我们在工作中其实没那么容易可以看到写得很好的代码。
|
缓存 算法 大数据
架构、框架侃侃而谈算法望而却步?吃透这份笔记轻松掌握算法技能
腾讯、百度阿里等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,让很多程序员都望而却步,面试时总败在算法这一关,拿不到好 Offer。 面试时很多候选人,聊起架构、框架侃侃而谈,但一写代码,就暴露真实水平。说白了,还是基本功不够扎实。 其实,不管你是什么语言,基本功一定要扎实,最核心的一定是数据结构与算法。也因此,所有大厂面试,都必考算法题。
|
SQL 安全 搜索推荐
学编程遇到问题,如何更好地提问?
不要只把你不懂的地方拿出来问而不提及问题的前因后果,否则回答者可能无法明白你的问题。尽量客观描述问题,而不是只说自己的理解和假设。在客观描述的基础上,你可以再加上自己的判断和尝试解决的结果。
如何系统性的阅读
如何系统性的阅读
74 0
|
开发框架 运维 前端开发
万丈高楼平地起,知识点拆解,带你攻破前端开发技能,一起坚持分阶段的巩固复习。
万丈高楼平地起,知识点拆解,带你攻破前端开发技能,一起坚持分阶段的巩固复习。