一.网络程序设计基础
1.网络协议
网络协议规定了计算机之间连接的物理、机械(网线与网卡的连接规定)、电气(有效的电平范围)等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容.就像不同的国家有不同的法律一样,目前网络协议也有多种。
TCP与UDP 协议
在 TCP/IP 协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即传输控制协议Transmission Control Protocol,TCP) 与用户数据报协议 (User Datagram Protocol,UDP)。TCP 协议是一种以固接连线为基础的协议,它提供两台计算机间可靠的数据传送。TCP 可以保证数据从一端送至连接的另一端时,能够确实送达,而且抵达的数据的排列顺序和送出时的顺序相同。
2.端口与套接字
一般而言,一台计算机只有单一的连到网络的物理连接(Physical Connection),所有的数据都通过此连接对内、对外送达特定的计算机,这就是端口。网络程序设计中的端口(port)并非真实的物理存在,而是一个假想的连接装置。端口被规定为一个在0~65535 的整数。HTTP 服务一般使用80端口,FTP 服务使用 21端口。假如一台计算机提供了 HTTP、FTP 等多种服务,那么客户机会通过不同的端口来确定连接到服务器的哪项服务上,如图所示。
二.TCP协议
TCP 网络程序设计是指利用 Socket 类编写通信程序。利用TCP 协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序,两者的功能和编写方法大不一样
1.InetAddress类
java.net 包中的 InetAddress 类是与 IP 地址相关的类,利用该类可以获取 IP 地址、主机地址等信息
例1.
2.ServeSocket类
java.net 包中的 ServerSocket 类用于表示服务器套接字,其主要功能是等待来自网络上的“请求”它可通过指定的端口来等待连接的套接字。服务器套接字一次可以与一个套接字连接。如果多台客户机同时提出连接请求,服务器套接字会将请求连接的客户机存入列队中,然后从中取出一个套接字,与服务器新建的套接字连接起来。若请求连接数大于最大容纳数,则多出的连接请求被拒绝。队列的默认大小是 50。
3.TCP网络程序设计
明白了 TCP 程序工作的过程,就可以编写 TCP 服务器程序了。在网络编程中,如果只要求客户机向服务器发送消息,不要求服务器向客户机发送消息,称为单向通信。客户机套接字和服务器套接字连接成功后,客户机通过输出流发送数据,服务器则通过输入流接收数据。下面是简单的单向通信的实例
例2.
三.UDP协议
基于UDP 通信的基本模式如下:
将数据打包 (称为数据包),然后将数据包发往目的地。
接收别人发来的数据包,然后查看数据包。
发送数据包的步骤如下:
(1)使用 DatagramSocket0创建一个数据包套接字。
(2) 使用 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)创建要发送的数据包。
(3)使用 DatagramSocket 类的 send()方法发送数据包。
接收数据包的步骤如下:
(1)使用 DatagramSocket(int port)创建数据包套接字,绑定到指定的端口。
(2)使用 DatagramPacket(byte[] buf,int length)创建字节数组来接收数据包
(3) 使用 DatagramPacket 类的 receive()方法接收 UDP 包。
1.DatagramPacket类
javanet 包的 DatagramPacket 类用来表示数据包。DatagramPacket 类的构造方法如下:
DatagramPacket(byte[] buf, int length)
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
2.DatagramSocket类
java.net 包中的 DatagramSocket 类用于表示发送和接收数据包的套接字。该类的构造方法如下:
DatagramSocket()
DatagramSocket(int port)
DatagramSocket(int port, InetAddress addr)
3.UDP网络程序设计
根据前面所讲的网络编程的基本知识以及 UDP 网络编程的特点,下面创建一个广播数据报程序广播数据报是一项较新的技术,其原理类似于电台广播。广播电台需要在指定的波段和频率上广播息,收听者也要将收音机调到指定的波段、频率,才可以收听广播内容。
例3.