HTTP请求:
HTTP请求由三个组件组成:
方法——统一资源标识符(URI)——协议/版本
请求标头
实体主体
每个HTTP请求都可以使用HTTP标准中指定的其中一个请求的方法。HTTP1.1支持7类请求:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE。GET和POST在互联网应用中最为常用。
请求标头包含有关客户端环境和请求实体主体的有用信息。每个标头都用一个回车/换行符(CRLF)进行分隔,这对于HTTP请求格式而言很重要。CRLF告诉HTTP服务器,实体主体从这里开始,在有的互联网编程书籍中,这个CRLF会被当作一个HTTP请求的第4个组件。
HTTP响应:
HTTP响应由三个组件组成:
协议——状态吗——描述
响应标头
实体主体
用java.net.URL对象可以表示URL,其构造器包含协议,主机,端口,路径,可以通过getFile(),getHost(),getPath(),getPort(),getProtocol(),getQuery()等方法来获取相应的参数信息。
通过URL.openStream()可以读取一个web资源,但也可以URL.openConnection()来获得URLConnection实例,即获取一个与远程计算机连接的对象,可以通过该对象对一台远程机器进行读取或写入资源。
URLConnection类有2个boolean域:doInput和doOutput,分别表示URLConnection是否可以用来读取和写入。doInput的默认值是true,表示始终可以利用URLConnection读取一个web资源,doOutput的默认值是false,表示URLConnection不能写入,为了能够用URLConnection对象进行写入,需要将doOutput的值设置为true。为doInput和doOutput设置值的时候,可利用setDoInput和setDoOutput方法完成。
利用URLConnection对象读取资源时,可调用他的getInputStream方法,该方法返回java.io.InputStream对象。写入资源时,可调用他的getOutputStream方法,该方法返回java.io.OutputStream。
URLConnection比URL.openStream更强大,还可以读取响应标头,并把数据写入服务器。
虽然可以利用URLConnection提交信息,但是可利用更加强大的java.net.Socket和java.net.ServerSocket类。
基于TCP的Socket编程
服务器程序的编写
①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。③调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。④最后关闭通信套接字。
客户端程序的编写
①调用Socket()创建一个流套接字,并连接到服务器端; ②调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 ③最后关闭通信套接字。
基于UDP的Socket编程
接收端程序的编写
①调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;②调用DatagramPacket(
byte[] buf, int length),建立一个字节数组以接收UDP包。③调用DatagramSocket类的receive(),接收UDP包。④最后关闭数据报套接字。
发送端程序的编写
①调用DatagramSocket()创建一个数据报套接字; ②调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包。 ③调用DatagramSocket类的send(),发送UDP包。④最后关闭数据报套接字。