国内前十网站建设公司网站建设需要达到什么样的效果

bicheng/2026/1/23 12:03:57/文章来源:
国内前十网站建设公司,网站建设需要达到什么样的效果,2014个人网站备案,手机wordpress后台前面我们讨论了HTTP协议的基本结构和Socket编程的基本原理#xff0c;本文我们来整个大活#xff1a;自己实现一个简单的浏览器。 目录 1.主线程循环体 2.readHostAndPort()方法的实现 3.readHttpRequest()方法的实现 4.sendHttpRequest()方法的实现 5.readHttpRespons…前面我们讨论了HTTP协议的基本结构和Socket编程的基本原理本文我们来整个大活自己实现一个简单的浏览器。 目录 1.主线程循环体 2.readHostAndPort()方法的实现 3.readHttpRequest()方法的实现 4.sendHttpRequest()方法的实现 5.readHttpResponse(...)方法的实现 在讨论HTTP协议的具体请求和响应头字段之前让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后由这个模拟器将HTTP请求发送给相应的服务器再接收服务器的响应消息。这个HTTP模拟器有几下特点 1.  可以手工输入HTTP请求并向服务器发送。 2.  接收服务器的响应消息。 3.  消息头和实体内容分段显示也就是说并不是象Telnet等客户端一样将HTTP响 应消息全部显示而是先显示消息头然后由用户决定是否显示实体内容。 4.  集中发送请求。这个HTTP模拟器和Telnet不同的是并不是一开始就连接服务器 而是将域名、端口以及HTTP请求消息都输完后才连接服务器并将这些请求发送给服务器。这样做的可以预防服务器提前关闭网络连接的现象。     5. 可以循环做上述的操作。 从以上的描述看要实现这个HTTP模拟器需要以下五步 主线程里建立一个死循环的while在循环内部是一个请求/响应对。这样就可以向服务器发送多次请求/响应以了。下面的四步都是被包括在循环内部的。从控制台读取域名和端口这个功能可以由readHostAndPort(...)来完成。从控制台读取HTTP请求消息这个功能由readHttpRequest(...)来完成。向服务器发送HTTP请求消息这个功能由sendHttpRequest()来完成。读取服务器回送的HTTP响应消息这个功能由readHttpResponse(...)来完成。 下面我们就来逐步实现这五步 1.主线程循环体 在建立这个循环之前先建立一个中叫HttpSimulator的类并在这个类中定义一个run方法用来运行这个程序。实现代码如下 public class HttpSimulator {private Socket socket;private int port 80;private String host localhost;private String request ; // HTTP请求消息 012private boolean isPost, isHead;public void run() throws Exception {BufferedReader reader new BufferedReader(new InputStreamReader(System.in));while (true) // 开始大循环{try {if (!readHostAndPort(reader)) break;readHttpRequest(reader);sendHttpRequest();readHttpResponse(reader);} catch (Exception e) {System.out.println(err: e.getMessage());}}}public static void main(String[] args) throws Exception {new HttpSimulator().run();} 从上面的代码可以看出我们分别调用了上述的四个方法。这些方法的具体实现将在后面讨论。上面的代码除了调用这四个核心方法外还做了一些准备工作。在008至012行定义了一些以后要用到的变量。在016和017行使用控制台的输入流建立了BufferedReader对象通过这个对象可以直接从控制台读取字符串而不是一个个地字节。 2.readHostAndPort()方法的实现 这个方法的主要功能是从控制台读取域名和端口。域名和端口通过:隔开:和域名以及端口之间不能有空格。当从控制台读取一个q时这个函数返回false表示程序可以退出了否则返回true表示输入的域名和端口是正确的。这个方法的实现代码如下 private boolean readHostAndPort(BufferedReader consoleReader) throws Exception {System.out.print(host:port);String[] ss null;String s consoleReader.readLine();if (s.equals(q)) return false;else {ss s.split([:]);if (!ss[0].equals()) host ss[0];if (ss.length 1) port Integer.parseInt(ss[1]);System.out.println(host : String.valueOf(port));return true;}} 上面的代码我们做一个分析 这个方法有一个BufferedReader类型的参数这个参数的值就是在HttpSimulator.java中的第016和017行根据控制台输入流建立的BufferedReader对象。这输出HTTP模拟器的控制符就象Windows的控制台的C:一样。consoleReader.readLine()从控制台读取一行字符串。ss s.split([:]) 通过字符串的split方法和响应的正则表示式([:])将域名和端口分开。域名的默认值是localhost端口的默认值是80。  3.readHttpRequest()方法的实现 这个方法的主要功能是从控制台读取HTTP请求消息如果输入一个空行表示请求消息头已经输完如果使用的是POST方法还要输入POST请求的实体内容。这个方法的实现代码如下 private void readHttpRequest(BufferedReader consoleReader) throws Exception {System.out.println(请输入HTTP请求:);String s consoleReader.readLine();request s \r\n;boolean isPost s.substring(0, 4).equals(POST);boolean isHead s.substring(0, 4).equals(HEAD);while (!(s consoleReader.readLine()).equals()) {request request s \r\n;}request request \r\n;if (isPost) {System.out.println(请输入POST方法的内容:);s consoleReader.readLine();request request s;}} 上面的代码我们简单解释一下 consoleReader.readLine() 读入HTTP请求消息的第一行。isPost 和isHead 用于确定所输入的请求方法是不是POST和HEAD。之后的代码读入HTTP请求消息的其余行。if (isPost) 代码段的功能是如果HTTP请求使用的是POST方法要求用户继续输入HTTP请求的实体内容。 4.sendHttpRequest()方法的实现 这个方法的功能是将request变量中的HTTP请求消息发送到服务器。下面是这个方法的实现代码 private void sendHttpRequest() throws Exception {socket new Socket();socket.setSoTimeout(10 * 1000); //设置读取数据超时为10秒。System.out.println(正在连接服务器);socket.connect(new InetSocketAddress(host, port), 10 * 1000); //超时时间System.out.println(服务器连接成功);OutputStream out socket.getOutputStream();OutputStreamWriter writer new OutputStreamWriter(out);writer.write(request);writer.flush();} 5.readHttpResponse(...)方法的实现 这个方法的主要功能是从服务器读取返回的响应消息。首先读取了响应消息头然后要求用户输入Y或N以确定是否显示响应消息的实体内容。这个程序之所以这样做主要有两个原因 (1) 为了研究HTTP协议。 (2) 由于本程序是以字符串形式显示响应消息的因此如果用户请求了一个二进制Web资源如一个rar文件那么实体内容将会显示乱码。所以在显示完响应消息头后由用户决定是否显示实体内容。 这个方法的实现代码如下  private void readHttpResponse(BufferedReader consoleReader) {String s ;try {InputStream in socket.getInputStream();InputStreamReader inReader new InputStreamReader(in);BufferedReader socketReader new BufferedReader(inReader);System.out.println(---------HTTP头---------);boolean b true; // true: 未读取消息头 false: 已经读取消息头 011while ((s socketReader.readLine()) ! null) {if (s.equals() b true !isHead) {System.out.println(------------------------);b false;System.out.print(是否显示HTTP的内容(Y/N):);String choice consoleReader.readLine();if (choice.equals(Y) || choice.equals(y)) {System.out.println(---------HTTP内容---------);continue;} else break;} else System.out.println(s);}} catch (Exception e) {System.out.println(err: e.getMessage());} finally {try {socket.close();} catch (Exception e) {}} System.out.println(------------------------);} 在上面的代码中013行是最值得注意的。其中s.equals()表示读入一个空行表明消息头已经结束由于在实体内容中也可以存在空行因此b true来标记消息头是否已经被读过当读完消息头后将b设为false如果以后再遇到空行就不会当成消息头来处理了。当HTTP请求使用HEAD方法时服务器只返回响应消息头;因此使用!isHead来保证使用HEAD发送请求时不显示响应消息的内容实体。 现在我们已经实现了这个HTTP模拟器下面让我们来运行并测试它。  我们将上面的代码执行起来然后会有个输入的提示 我们输入www.csdn.net 然后继续分行输入如下的HTTP请求消息 GET / HTTP/1.1 Host: www.csdn.net 之后根据提示输入Y运行的结果如下所示 ------------------------ 是否显示HTTP的内容(Y/N):Y ---------HTTP内容--------- html headtitle400 Bad Request/title/head body centerh1400 Bad Request/h1/center hrcenterWAF/center /body /html 到此我们就实现了一个简单的HTTP浏览器了。 参考 本文参考了李宁老师(蒙娜丽宁)的文章和介绍

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

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

相关文章

wordpress建商城平台潍坊百度网站优化

Redis提供了以下五种基本数据类型及其应用场景: 1 , String(字符串): 适用场景:用于存储统计网站访问数量、当前在线人数等信息。此外,它也适用于存#### 储JPG图片或者序列化的对象。 2 , Hash&#xff08…

诸暨网站建设公司百度推广就是做网站吧

CDN的全称是Content Delivery Network,即内容分发网络。通过在网络各处放置节点服务器在现有互联网基础上构成的一层智能虚拟网络,cdn系统使网络内容传输得更快、更稳定。为网站做加速的同时,防ddos,CC,web应用攻击&am…

网站文章不收录怎么办齐齐哈尔做网站公司

Java进阶16 一、单元测试 单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单原测试就是针对Java方法的测试,进而检查方法的正确性。简单理解就是测试代码的工具。 1、Junit 1.1 Junit引入 目…

电商网站后台怎么做温州市建设工程质量安全管理总站

今天,SuperSocket的作者发布了2.0版本的第一个预览版。SuperSocket 2.0 是一个经过全新设计的,第一个完全基于.NET Core的版本。作者正在积极尝试提供更简单易用的API的同时,尽量保证与老版本相似的原汁原味的开发体验。新的版本中亦删除了一…

官方网站域名备案自己免费做网站

今天(5月12日,西雅图)的Build大会上,Microsoft的Amanda Silver和Tim Sneath针对Visual Studio 2017未来将会提供的特性做了演讲。Microsoft所聚焦的一个领域是改进IDE对所有用户的无障碍访问,包括视力障碍者。 事实上…

富阳做兼职的网站朔州网站建设收费多少

Web组件概述 Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载、页面交互、页面调试等能力。 页面加载:Web组件提供基础的前端页面加载的能力,包括加载网络页面、本地页面、Html格式文本数据。页面交互:Web组件提供…

台州市城乡建设规划局网站高密 网站建设

前言 在历史课本上,对尧、舜、禹三代君王的描述是,他们在去世之前通过禅让制的方式把自己的王位禅让给了其他有贤明的能臣。 禅让制也是中国古代时期被无数的文人志士追捧的一个制度,因为他们觉得那个时代是公天下的时代。 可实际上自从人…

网站手机模板的特点科创纵横 网站建设

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

百度最容易收录的网站音乐资源网站开发

简介:对于大多数玩家来说,云游戏已经不是一个陌生的概念,它经常和秒玩、不吃设备、大屏临场感、上手门槛低、真香等字眼一起出现在评论留言区。的确,对于既想尝试高品质游戏大作又不想一直卷装备的玩家来说,云游戏做到…

宁夏建设厅网站首页小程序制作简单教程

前言 Dirty PageTable 是一种针对堆相关漏洞的利用手法,主要就是针对 PTE 进行攻击。 参考文章: Dirty Pagetable: A Novel Exploitation Technique To Rule Linux Kernel – 该利用方式提出原文 上述文章已经讲的非常清楚了,就是实操写 e…

做淘宝客网站一定要备案吗wordpress 获取分类id

Nmap 文章目录 Nmap端口扫描及其原理端口扫描用法Zenmap配置说明 Nmap 是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具官网为:www.nmap.org。 一般情况下,Nmap用于列举网…

网站设计好不好wordpress首页地址

ulimit命令 ulimit 命令用于查看和设置 shell 运行时的资源限制。它可以控制各种资源,如文件打开数量、堆栈大小、CPU 时间等。ulimit 命令通常用于限制 shell 启动的进程的资源使用量,以防止系统资源被耗尽。ulimit命令的主要作用是提高系统的性能和稳…

郑州网站建设行情加强信息管理 维护网站建设

说明 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把…

久久建筑网如何注销廊坊优化软件

【C】郭老二博文之:C目录 1、Poco::Process 进程 1.1 说明 Poco::Process的功能: 获取有关当前进程的一些信息开始一个新的进程终止另一个进程 1.2 用法 头文件:#include “Poco/Process.h” Poco::Process中的所有方法都是静态的。 常…

淘宝网站的论坛做的怎么样丹东抖音seo精英

Android下SF合成流程重学习之onMessageInvalidate 引言 虽然看了很多关于Android Graphics图形栈的文章和博客,但是都没有形成自己的知识点。每次学习了,仅仅是学习了而已,没有形成自己的知识体系,这次趁着有时间,这次…

技术网站源码wordpress网站制作的原因

大家好,我是雄雄,欢迎关注公众号【雄雄的小课堂】。最近,我的个人站上线啦,大家可以直接在浏览器的地址栏中输入:穆雄雄.com,轻轻敲击回车,即可直接进入……

站长工具精华创建网站投资多少

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

珠海市网站建设制作设计平台建站之星app

仍然担心看不到sm841中的温度吗?您是否仍对Toshiba Q pro看不见写入量和使用寿命值感到不安?为了查看M4 / 00的写入量,您是否仍在使用C300固件升级程序重新启动到纯DOS并麻烦地运行命令?想知道在协议级别上SSD出了什么问题吗&…

天津网站建设制作方案甘肃网站建设哪家好

第十一章 事件 事件是在类中定义的一种成员,定义了事件成员的类型可以: 方法能登记对事件的关注方法能注销对事件的关注事件发生时,登记了的方法会收到通知 设计要公开事件的类型 定义类型(容纳要发给事件接收者的附加信息&#…

企业手机网站建设市场分析企业官网和小程序的区别

建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加…