学习笔记(一)http通信本质

 


   学习笔记(一)http通信本质


1.底层都是基于TCP/IP 、Socket通信,客户端(browser浏览器,但不限于浏览器)请求过来的数据,都是可以通过socket的getInputStream
  方法获取,之后,再进行解析,业务处理,再创建输出流通道,输出给客户端;

2.之所以说不限于浏览器 ,是因为有些应用程序可以封装基于HTTP协议的组件(如C++BUULDER中组件,httpclient.jar及其拓展版本的),可以类比为DOS与WINDOWS桌面的使用场景,但底层都是基于Socket通讯,;

3.B/S 模式的服务端,只要是支持服务端运行的脚本或语言,比如,java,PHP,python等按照HTTP 的报文格式输出,就能构成一个完整的B/S
  交互通讯。比如JAVA中:
           ....................
                    //socket  是 SocketServer  的实例
                    OutputStream  out= socket.getOutputStream();
      PrintWriter pw=new PrintWriter(new OutputStreamWriter(out));
      //输出客户端报文头格式
      pw.println("HTTP/1.1 200 OK ");
      pw.println("Content-Type: text/html;charset=utf-8");
      pw.flush();
                    .................. html 主体部分省略  ............

4.从打开IE浏览器输入http://IP或域名:端口/的URL 开始 ,客户端的SOCKET已经创建,可以用netstat  -ano|findstr  "端口号",
  在任务管理器中就可以看到IE所占用的端口号 就是输入的端口,当然如果无输入端口号,默认就是80;

5.至于多个客户端的请求,可以拓展为服务端通过连接池+线程池的方式来处理,当然,这时应用服务器就登场了,以容器的方式来管理
  服务端的连接信息,然后通过servlet  来处理 客户端的请求和响应,具体见“servlet笔记篇”.

6.browser浏览器请求的资源可以是资源,比如html,图片、音视频文件,甚至是一个动作,用过Struts 的就会知道,扩展ActionSupport
  基类自己编写的处理方法,不一定是service方法。

猜你喜欢

转载自blog.csdn.net/hello_delphi/article/details/78547486