(八)Java网络编程
Java网络编程
1、tcp和udp的区别
TCP,Transmission Control Protocol 的缩写,即传输控制协议。
1)面向连接,即必须在双方建立可靠连接之后,才会收发数据
2)信息包头 20 个字节
3)建立可靠连接需要经过3次握手
4)断开连接需要经过4次挥手
5)需要维护连接状态
6)报文头里面的确认序号、累计确认及超时重传机制能保证不丢包、不重复、按序到达
7)拥有流量控制及拥塞控制的机制
UDP,User Data Protocol 的缩写,即用户数据报协议。
1)不建立可靠连接,无需维护连接状态
2)信息包头 8 个字节
3)接收端,UDP 把消息段放在队列中,应用程序从队列读消息
4)不受拥挤控制算法的调节
5)传送数据的速度受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制
6)面向数据报,不保证接收端一定能收到
2、OSI的七层模型
1)物理层
2)数据链路层
3)网络层
4)传输层
5)会话层
6)表达层
7)应用层
3、Java中的Socket
1)Socket也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,是应用层与传输层之间的桥梁
2)应用程序可以通过Socket向网络发出请求或应答网络请求
3)网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层和传输层之间,使用Socket来进行连接
4)Socket是传输层供给应用层的编程接口
5)Socket编程可以开发客户端和服务器应用程序,可以在本地网络上进行通信,也可通过公网Internet在通信
4、基于TCP的Socket编程的主要步骤
服务端:
1)指定本地的端口创建 ServerSocket 实例, 用来监听指定端口的连接请求
2)通过 accept() 方法返回的 Socket 实例,建立了一个和客户端的新连接
3)通过 Sockect 实例获取 InputStream 和 OutputStream 读写数据
4)数据传输结束,调用 socket 实例的 close() 方法关闭连接
客户端:
1)指定的远程服务器 IP 地址和端口创建 Socket 实例
2)通过 Socket 实例获取 InputStream 和 OutputStream 来进行数据的读写
3)数据传输结束,调用 socket 实例的 close() 方法关闭连接
5、基于UDP的Socket编程的主要步骤
服务端:
1)指定本地端口创建 DatagramSocket 实例
2)通过字节数组,创建 DatagramPacket 实例,调用 DatagramSocket 实例的 receive() 方法,用 DatagramPacket 实例来接收数据
3)设置 DatagramPacket 实例返回的数据,调用 DatagramSocket 实例的 send() 方法来发送数据
4)数据传输完成,调用 DatagramSocket 实例的 close() 方法
客户端:
1)创建 DatagramSocket 实例
2)通过 IP 地址端口和数据创建 DatagramSocket 实例,调用 DatagramSocket 实例 send() 方法发送数据包
3)通过字节数组创建 DatagramSocket 实例,调用 DatagramSocket 实例 receive() 方法接受数据包