网络编程及http

java URL编程(http  getpost

连接步骤:

1.创建URL对象

  URL(String url)

2.通过URL对象打开连接URLConnection

  URLConnection openConnection()

3.通过URLConnection对象获得输入输出流

 InputStream =connection.getInputStream()

 OutputStream =connection.getOutputStream()

Http get与Post区别?

  get用于客户端从服务器获得信息,虽然可以传递参数,但是因为参数需要跟在url后面,受url长度的限制,且参数可以在地址栏看到

 post用户向服务器传递大量参数,参数以请求体的形式传递到服务器端,理论上没有长度限制


java基于TCPSocket编程

服务端:

    ServerSocket serversocket=new ServerSocket(int port)    --》监听端口,如果为0,会自动分配一个空闲端口

    Socket socket=serversocket.accept();   --》获得连接,发生在3次握手之后

    InputStream =socket.getInputStream();

    OutputStream =socket.getOutputStream();

客户端:

       Socket socket=new Socket(String host,int port);  --》建立连接

       InputStream =socket.getInputStream();

       OutputStream =socket.getOutputStream();

HTTPSocket区别

答:1.http建立在TCP协议上的一种应用层协议,Socket支持不同的传输层协议TCPUDP.

       2.Socket可以主动向客户端推送消息,HTTP必须先请求,后响应。

HTTP协议介绍(无状态)

超文本传输协议,无状态,采用客户服务器模式,HTTP流程:

         1)客户端和服务器端建立连接

         2)客户端向服务器端发送请求

         3)服务器发送响应

         4)客户端收到服务器响应信息,通过浏览器显示给用户,

信息明文传递,默认采用80端口,https信息密文传输,采用443端口。

HTTP不足:

     1.信息明文传输

     2.无法验证通信方的身份     --伪装客户端、服务端

无状态:同一个会话的连续两次请求相互不了解,如果后续处理需要前面的信息,它必须重传。

保持HTTP状态的技术:(1Cookie -->客户端

                                      2Session -->服务器端

Cookie被禁用get方法URL重写;post方法提交隐藏表单

HTTP1.0HTTP1.1

答:(1)1.0非持久连接-->一个连接只能发送一次HTTP请求(Tcp短连接)

          1.1支持持久连接-->一个连接可以发送多次HTTP请求(Tcp长连接)

         持久连接两种方式:

          1.非流水线方式:客户端收到上一个请求的响应后才能发送下一个请求

          2.流水线方式:客户端收到上一个请求的响应前就可以发送下一个请求,但服务器必须按照请求的先后顺序依次给出回应。

(2)1.1增加了cache-control响应头,控制信息在浏览器的缓存。

心跳包:用于长连接的保活和断线处理。

心跳检测步骤
    客户端每隔固定时间发送一个心跳包给服务器,同时启动一个超时计数器,如果在超时时间内收到服务器回应,说明服务器正常,删除超时计数器,如果在超时时间内没有收到服务器响应,认为服务器挂掉,客户端close连接,server如果长时间收不到心跳包,也要close连接。首次重连时,等待INTERVAL时间再发起重连,保证服务器有充足时间释放句柄资源。



猜你喜欢

转载自blog.csdn.net/gaibian_one/article/details/77950388
今日推荐