• 客户端与服务器端


    一、HTTP协议:
    1、定义:用于服务器与客户端的通讯的协议,允许web服务器和浏览器通过互联网进行发送和接收数据。是一种请求和响应协议,使用可靠的TCP协议,TCP协议的端口为80,是一种面向连接的协议。
    2、HTTP协议请求的三个组成部分:这三部分之间用回车换行符(CRLF)隔开
         请求部分:方法(GET/POST等7种,其他的很少用,书上有介绍)[空格,该部分内容以空格隔开] 统一资源标识符URI[空格,该部分内容以空格隔开 ] 协议/协议版本
         URL通常都是相对服务器的根目录,因此以“/”开头。
         请求头部:请求的头部包含了关于客户端环境和请求的主体内容的有用信息。例如它可能包括浏览器设置的语言,主体内容的长度等等。每个头部通过一个回车换行符(CRLF)来分隔的。
         请求主体内容:对于HTTP请求格式来说,头部和主体内容之间有一个回车换行符(CRLF)是相当重要的。CRLF告诉HTTP服务器主体内容是在什么地方开始的。在一些互联网编程书籍中,CRLF还被认为是HTTP请求的第四部分。
    3、 HTTP响应也包括三个部分: 
    · 方法—统一资源标识符(URI)—协议/版本
    · 响应的头部
    · 主体内容
    二、服务器与客户端通讯
    1、服务器与客户端通讯需要用到两个部分:Socket(客户端)和ServerSocket(服务器端)
    (1)ServerSocket(java.net.ServerSocket, 服务器端套接字),要创建一个服务器套接字,你需要使用ServerSocket类提供的四个构造方法中的一个。你需要指定IP地址和服务器套接字将要进行监听的端口号。通常,IP地址将会是127.0.0.1,也就是说,服务器套接字将会监听本地机器。服务器套接字正在监听的IP地址被称为是绑定地址。服务器套接字的另一个重要的属性是backlog,这是服务器套接字开始拒绝传入的请求之前,传入的连接请求的最大队列长度,四种构造方法分别为:
              ServerSocket ss = new ServerSocket();//创建一个未绑定的ServerSocket
              ServerSocket ss = new ServerSocket(int port);//创建一个绑定到某端口的ServerSocket
              ServerSocket ss = new ServerSocket(int port, int log);//创建一个绑定到某端口的ServerSocket,并设置了最大队列长度。
              ServerSocket ss = new ServerSocket(int port, int log, InetAddress address);//创建一个绑定到某地址、某端口的ServerSocket,并设置了最大队列长度。
              对于第四个构造方法,绑定地址必须是InetAddress的一个实例,一种构造InetAddress对象的简单的方法是调用它的静态方法getByName,传入一个包含主机名称的字符串,就像下面的代码一样。
                   InetAddress.getByName("127.0.0.1");
          创建ServerSocket的常用方法:  
                   new ServerSocket(8080, 1, InetAddress.getByName("127.0.0.1"));
          代码构造了一个监听本地机器8080端口的ServletSocket,它的队列长度为1. 
          服务器创建后就保持等待状态(TCP协议,可靠的传输协议,是同步协议,即没有响应返回就一直等待)
    (2)Socket(java.net.Socket类,客户端套接字):需要知道要访问的服务器端的IP/主机名和端口号,即可向服务器端发送请求。可以用Socket的众多构造方法中的一个来建立Socket         
           new Socket ("yahoo.com", 80);
         一旦你成功创建了一个Socket类的实例,你可以使用它来发送和接受字节流。要发送字节流,你首先必须调用Socket类的getOutputStream方法来获取一个java.io.OutputStream对象。要发送文本到一个远程应用,你经常要从返回的OutputStream对象中构造一个java.io.PrintWriter对象。要从连接的另一端接受字节流,你可以调用Socket类的getInputStream方法用来返回一个java.io.InputStream对象。 
    (3)服务器端通过accept()方法来接收客户端的连接请求,并与客户端建立连接,同时返回一个Socket
              Socket s =  ss. accept();
    (4)通过Socket可以获得一个输入流和一个输出流, 输入流用于读取客户端请求数据,输出流用于向客户端返回响应信息。
    比如:InputStream input =  s.getInputStream();
              OutputStream output = s.getOutputStream();
    总结很重要哦 方法得当,坚持会有奇迹哦
  • 相关阅读:
    python模块之__future__模块
    SQL之分组排序取top n
    SQL之层次查询
    win server 2008添加磁盘-脱机转换为联机状态方法
    拉链表-增量更新方法一
    一道hive SQL面试题
    一道与时间差有关的SQL面试题
    (转)linux中nmcli命令的使用及网络配置
    (转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe
    (转)Linux 系统设置 : dmesg 命令详解
  • 原文地址:https://www.cnblogs.com/sunyuhuan/p/7200175.html
Copyright © 2020-2023  润新知