网络编程
一、网络程序设计基础
- 服务器 <-------> 网络 <------> 客户机
- 网络协议
- IP协议
- TCP/UDP协议(传输控制协议/用户数据报协议)(Transmission Control Protocol \ User Datagram Protocol )
- TCP面向连接,UDP无连接
- 端口和套接字
- 端口(port)0~~65535 HTTP(80) FTP(21)
- 套接字(Socket)用于连接应用程序和端口
二、TCP程序设计基础
-
InetAddress类:获取IP地址、主机信息等
方法 返回值 功能描述 getByName(String host) InetAddress 获取Host对应的InetAddress对象 getHostAddress() String 获取InetAddress对象所含的IP地址 getHostName() String 获取此IP地址的主机名 getLocalHost() InetAddress 返回本地主机的InetAddress对象 -
InetAddress类必须要进行异常处理
-
ServerSocket类:通过指定端口来等待连接的套接字;等待来自网络上的“请求”;服务器套接字一次可以与一个套接字连接。如果有多个套接字连接,则将他们放在一个队列中,然后从中取出一个套接字进行连接;超出最大容纳数的连接请求被拒绝;默认大小为50
方法 功能描述 ServerSocket() 创建非绑定服务器套接字 ServerSocket(int port) 创建绑定特定端口的套接字 ServerSocket(int port, int backlog) 利用指定的backlog创建服务器套接字并将其绑定到特定的端口 ServerSocket(int port, int backlog, InetAddress bindAddress) 使用特定端口、侦听backlog和要绑定到的本地IP地址创建服务器;适用于计算机上有多快网卡和多个IP地址的情况,用于可以明确规定ServerSocket在那块网卡或IP地址上等待客户的连接请求
三、UDP程序设计基础
-
基于UDP通信的基本模式
- 将数据打包,然后将数据包发往目的地
- 接受别人发来的数据包,然后查看数据包
-
UDP程序的步骤:
- 发送数据包
- 使用DatagramSocket()创建一个数据包套接字
- 使用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)创建要发送的数据包
- 使用DatagramSocket类的send()方法发送数据包
- 接受数据包
- 使用DatagramSocket(int port)创建数据包套接字,绑定到指定端口
- 使用DatagramPacket(byte[] buf, int length)创建字节数组来接受数据包
- 使用DatagramPacket类的recive()方法接受UDP包
- 发送数据包
-
DatagramPacket类:表示数据包
方法 功能描述 DatagramPacket(byte[] buf, int length) 创建DatagramPacket对象,指定了数据包的内存空间和大小 DatagramPacket(byte[] buf, int length, InetAddress address, int port) 指定了数据包内存空间和大小、数据包的目的地址和端口;发送数据时,必须指定接收方的Socket地址和端口号,可创建发送数据的DatagramPacket对象 -
DatagramSocket类:表示发送和接受数据包的套接字
方法 功能描述 DatagramSocket() 创建DatagramSocket对象,构造数据报套接字并将其绑定到本地主机上任何可用端口 DatagramSocket(int port) 创建DatagramSocket对象,创建数据报套接字并将其绑定到本地主机上指定可用端口 DatagramSocket(int port, InetAddress address) 创建DatagramSocket对象,创建数据报套接字将其绑定到指定的本地地址;适用于多网卡、多IP地址