Java的网络编程提供两种通信协议:TCP(传输控制协议)和UDP(数据报协议)。
TCP和UDP都是传输层协议,TCP协议是可靠的传输协议,传输前会采用“三次握手”的方式建立连接,以保证传输的可靠性。UDP协议是不可靠的传输协议,即发送出去的数据不一定接收的到。
1、IP和InetAddress
<1>、IP地址:中存在掩码,掩码用于区分网络号(用于识别主机所在的网络)和主机号(用于识别该网络的主句)。IP地址=网络地址+主机地址
序号 | 地址分类 | 地址范围 |
1 | A类地址(保留给政府机构) | 1.0.01~126.255.255.254 |
2 | B类地址(中等规模公司) | 128.0.0.1~191.255.255.254 |
3 | C类地址(任何需要的人) | 192.0.0.1~223.255.255.254 |
4 | D类地址(组播) | 224.0.0.1~239.255.255.0 |
5 | E类地址(实验) | 240.0.0.1~255.255.255.254 |
127.x.x.x是保留地址,用作循环测试。使用127.0.0.1表示本机的IP地址。
<2>、InetAddress类主要表示IP地址,有两个子类:Inet4Address、Inet6Address,一个用于表示IPv4,一个用于表示IPv6.
2、URL和URLConnection
<1>、URL统一资源定位符,直接使用此类找到互联网上的资源。
将根据指定的URL对资源只用InputStream进行读取。
<2>、URLConnection是封装访问远程网络资源一般方法的类,通过他可以建立与远程服务器的连接,检查远程资源的一些属性。
URLConnection对象可以通过URL类的openConnection()方法取得。
3、 URLEncoder可以为传递的内容进行编码,URLDecoder可以为传递的内容进行解码。
4、TCP程序设计
Java中使用Socket完成TCP程序开发,可以建立可靠的、双向的、持续的、点对点的通信连接。服务器端使用ServerSocket等待客户端连接,每一个客户端都使用一个Socket对象表示。
<1>、在Java的网络程序中客户端只要符合连接的通讯协议,那么服务器端就可进行接收。
在服务器短每次运行时都要使用accept()方法等待客户端连接,此方法执行后服务器端将进入到阻塞状态,指导客户端连接之后程序才可以想先继续执行。此方法返回值类型是Socket,每一个Socket表示一个客户端对象。(服务器端每次执行完毕后服务器都会退出,因为服务器端只能接收一个客户端的连接,主要是由于accept()方法只能使用一次。)
5、UDP程序设计
使用UDP发送信息,对方不一定会接受到。所有的信息使用数据报的形式发送出去。Java中使用DatagramSocket类和DatagramPacket类完成UDP程序的开发。
UDP开发中使用DatagramPacket类包装一条发送的信息,之后使用DatagramSocket类用于完成信息的发送操作。