网络编程之TCP协议和UDP协议

时间:2022-06-16 10:27:56

运输层协议中有两个非常重要的协议:

  传输控制协议TCP(TransmissionControl Protocol)

  用户数据报协议UDP(User DatagramProtocol)。

      传输控制协议TCP是面向连接的运输层协议,是可靠的协议。即应用进程(或程序)在使用TCP协议之前,必须先建立TCP连接,在传输完毕后,释放已经建立的连接。利用TCP协议进行通信的两个应用进程,一个是服务器进程。另一个是客户进程。

       用户数据报协议UDP是面向无连接的运输层协议,是不可靠的,速度快。即应用进程(或程序)在使用UDP协议之前,不必先建立连接。自然,发送数据结束时也没有连接需要释放。因此,减少了开销和发送数据之前的时延。

①TCP协议编程:逻辑上的分为了服务器和客户端

客户端Socket的工作过程包含以下四个基本的步骤:

 1.创建Socket。根据指定的 IP 地址或端口号构造 Socket类对象。如服务器端响应,则建立客户端到服务器的通信线路。

 2.打开连接到 Socket 的输入/出流。 使用getInputStream()方法获得输入流,使用 getOutputStream()方法获得输出流。

 3.按照一定的协议对 Socket  进行读/写操作。通过输入流读取服务器放入线路的信息(但不能读取自己放入线路的信息),通过输出流将信息写入线程。

 4.关闭Socket。断开客户端到服务器的连接,释放线路

服务器程序的工作过程包含以下四个基本的步骤:将上述第一步改为构造ServerSocket类对象,监听客户端的请求并进行响应。

 1.调用ServerSocket(int port) 创建一个服务器端套接字,并绑定到指定端口上。

 2.调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。

 3.调用Socket类的 getOutputStream 和getInputStream 获取输出流和输入流,开始网络数据的发送和接收。

 4.最后关闭通信套接字。

ServerSocket:实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

 构造方法:ServerSocket(int port) 创建绑定到特定端口的服务器套接字。

 常用方法:Socket accept() 侦听并接受到此套接字的连接。

   void close() 关闭此套接字。

Socket:实现客户端套接字(也可以就叫“套接字”)。

 构造方法:

  Socket(InetAddressaddress, int port) 创建一个流套接字并将其连接到指定 IP地址的指定端口号                              

         Socket(Stringhost, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。

  常用方法:

       voidclose() 关闭此套接字。

              OutputStreamgetOutputStream() 返回此套接字的输出流。

              InputStreamgetInputStream() 返回此套接字的输入流。

②UDP协议编程:

DatagramSocket:此类表示用来发送和接收数据报包的套接字

 构造方法:

       DatagramSocket()构造数据报套接字并将其绑定到本地主机上任何可用的端口。

       DatagramSocket(intport) 创建数据报套接字并将其绑定到本地主机上的指定端口。

       DatagramSocket(intport, InetAddress laddr) 创建数据报套接字,将其绑定到指定的本地地址。

 常用方法:

       voidsend(DatagramPacket p) 从此套接字发送数据报包。

       voidreceive(DatagramPacket p) 从此套接字接收数据报包。

       voidclose() 关闭此数据报套接字。

DatagramPacket:此类表示数据报包

 构造方法:

       DatagramPacket(byte[]buf, int length) 构造DatagramPacket,用来接收长度为length 的数据包。

 常用方法:

      int getLength() 返回将要发送或接收到的数据的长度。