Java教程

网络 -技术入门

本文主要是介绍网络 -技术入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

HTTP协议

HTTP一使用有两种形式,一种是HttpURLConnection,一种是HttpClient

1.设置HTTP请求所使用的方法(GET:希望从服务器那里获取数据;POST:希望提交数据给服务器);
connection.setRequestMethod(“GET”);
1.自由定制,设置读取超时.setReadTimeout(毫秒);
2.调用getInputStream()获取到服务器返回的输入流,然后对其进行读取
3.调用disconnect()将HTTP连接关闭;

网络的七层模型介绍

TCP和UDP的区别

 TCP/IP网络模型:

TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();     SOCKET SocketListen =socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind(); SOCKET_ERROR = bind(SocketListen,(const sockaddr*)&addr,sizeof(addr))
4、开启监听,用函数listen();                 SOCKET_ERROR == listen(SocketListen,2)
5、接收客户端上来的连接,用函数accept();    SOCKET SocketWaiter = accept(SocketListen,

UDP:
与之对应的UDP编程步骤要简单许多,分别如下:
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;

三次握手和四次挥手

三次握手:

 

第一次:客户端发送初始序号x和syn=1请求标志
第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1
第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1

四次挥手:

第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

Socket编程

对于服务器来说,服务器先初始化socket,然后端口绑定(bind),再对端口监听(listen),调用accept阻塞,等待客户端连接请求。对于客户端来说,客户端初始化socket,然后申请连接(connection)。客户端申请连接,服务器接受申请并且回复申请许可(这里要涉及TCP三次握手连接),然后发送数据,最后关闭连接,这是一次交互过程。 

UDP编程

服务端

DatagramSocket(int port) 指定端口获得发送的数据报

客户端

DatagramSocket() 作为客户端使用

主要方法

receive(DatagramPacket) 接收数据包

send(DatagramPacket) 发送数据报

对于有些场景,比如频繁上报的心跳数据,或者车辆GPS数据,因为丢失一条或者多条,对于整个系统的影响很小,或者说没有,这样的场景,在能够保证数据传输效率的前提下,使用UDP可能更合适。

这篇关于网络 -技术入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!