网络编程
1. java.net.InetAddress:此类表示互联网协议 (IP) 地址。
静态方法:可以获取InetAddress对象 static InetAddress getLocalHost() 返回本地主机。 static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。 非静态的方法: String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 String getHostName() 获取此 IP 地址的主机名。2. UDP通信的发送端:把数据打包,发送的接收端
和udp相关的类: java.net.DatagramPacket:此类表示数据报包。 用来封装数据 java.net.DatagramSocket:此类表示用来发送和接收数据报包的套接字。 套接字:封装了ip地址和端口号的网络对象 构造方法: DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 DatagramSocket() 构造数据报套接字并将其绑定到本地主机上任何可用的端口。 DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。 DatagramSocket类的成员方法: void send(DatagramPacket p) 从此套接字发送数据报包。 实现步骤: 1.创建DatagramPacket对象,封装要发的数据,指定数据的长度;指定接收端的IP地址对象和端口号 2.创建DatagramSocket对象,用来发送数据报包(是一个网络对象,可以和系统要指定的端口号,不要指定的系统会随机分配) 3.使用DatagramSocket中的方法send发送数据报包到接收端 4.释放资源 UDP通信叫面向无连接通信,不用管接收端是否存在,是否能收到数据,可以直接发送 如果接收端不存在,就会出现数据的丢失UDP通信的接收端:接收发送端发送的数据,进行拆包 和udp相关的类: java.net.DatagramPacket:此类表示数据报包。 用来封装数据 java.net.DatagramSocket:此类表示用来发送和接收数据报包的套接字。 套接字:封装了ip地址和端口号的网络对象 构造方法: DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。 DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。 DatagramSocket的成员方法: void receive(DatagramPacket p) 从此套接字接收数据报包。 实现步骤: 1.创建DatagramPacket对象,封装字节数组,用来接收发送端的数据 2.创建DatagramSocket对象,和系统要指定的端口号 3.调用DatagramSocket对象中的方法receive接收发送端的数据报包 4.拆包,可以使用DatagramPacket中的方法 获取到发送端数据的长度 int getLength() 返回将要发送或接收到的数据的长度。 获取到发送端的ip地址对象 InetAddress getAddress() 获取到发送端的端口号 int getPort() 5.释放资源
3. TCP通信的客户端:和服务器建立连接(3次握手),给服务器发送数据,读取服务器回写的数据
表示客户端的类: java.net.Socket:此类实现客户端套接字(也可以就叫“套接字”)。 构造方法: Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。 成员方法: OutputStream getOutputStream() 返回此套接字的输出流。 InputStream getInputStream() 返回此套接字的输入流。 注意:客户端和服务器进行交互,不能使用自己创建的字节流对象,必须使用Socket中提高的网络流对象 实现步骤: 1.创建客户端Socket对象,封装服务器的IP地址和端口号(创建对象的过程,就是客户端和服务经过3次握手建立连接的过程) 2.使用Socket中的方法getOutputStream,获取网络字节输出流对象 3.使用OutputStream网络字节输出流中的方法write往服务发送数据 4.使用Socket中的方法getInputStream,获取网络字节输入流对象 5.使用InputStream网络字节输入流对象中的方法read,读取服务器回写的数据 6.释放资源(Socket) TCP通信是面向连接的通信,必须先启动服务器,客户端才能和服务器经过3次握手建立连接 否则会抛出连接的异常:ConnectException: Connection refused: connect
TCP通信的服务器端:和客户端通过3次握手,建立连接;接收客户端发送的数据,给客户端回写数据
表示服务器的类: java.net.ServerSocket:此类实现服务器套接字。 构造方法: ServerSocket(int port) 创建绑定到特定端口的服务器套接字。 服务器有一件特别重要的事情,必须的明确是哪个客户端连接的服务器 可以使用accept方法获取,请求的客户端对象 成员方法: Socket accept() 侦听并接受到此套接字的连接。 实现步骤: 1.创建服务器ServerSocket对象,和系统要指定的端口号 2.使用ServerSocket对象中的方法accept,获取请求的客户端对象Socket 3.使用Socket中的方法getInputStream,获取网络字节输入流对象 4.使用InputStream网络字节输入流对象中的方法read,读取客户端发送的数据 5.使用Socket中的方法getOutputStream,获取网络字节输出流对象 6.使用OutputStream网络字节输出流中的方法write,给客户端回写数据 7.释放资源(Socket,ServerSocket)