运输层协议中有两个非常重要的协议:
传输控制协议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() 返回将要发送或接收到的数据的长度。