第 15章 网络编程
15.1 计算机网络基础
15.2 流套接字通信
15.3 数据报
15.4 读取网上资源
15.5 浏览网页
15.6 习题
15.1 计算机网络基础
15.1.1 客户端及服务器
15.1.2 IP地址
15.1.3 端口
15.1.4 套接字
15.1.1 客户端及服务器
发出连接请求的计算机称为客户端,目的计算机称为服务器。
在客户端发出连接请求时,服务器必须正在等待客户端的请求。如果服务器监听到来自客户端的连接请求,它可以接受也可以拒绝。一旦接受,
就建立起客户端和服务器之间的连接。此后,两者就可以开始双向通信。
15.1.2 IP地址
IP地址:
由 4个 0~255之间的数字组成,数字之间用小数点分隔。
例:
125.122.10.236
主机名:
Internet中称作域名。
例:
java.sun.com
15.1.2 IP地址(续)
本机回路的 IP地址:
– 127.0.0.1
– localhost
InetAddress对象保存网络中计算机的主机名和 IP地址,它可以通过下述静态方法 生成:
– getByName()
– getLocalHost()
– getByAddress()
– getAllByName()
15.1.2 IP地址(续)
getHostName()
//取得主机名
getHostAddress()
//取得 IP地址例 15-1 获取 IP地址源代码
15.1.3 端口
端口是一种软件上的抽象。通常一台服务器上的每个服务器程序都对应一个不同的端口号。每个服务器程序只监听相应端口上的信息,而客户端向服务器发出连接请求时,必须指明欲使用的端口号,也即它想要的网络服务。
TCP/ IP系统中,端口号的取值范围是
0~65535。其中,系统服务保留了 0~1023之间的端口号。
15.1.4 套接字
套接字( socket)是对网络通信介质的一种软件抽象,可以将它想象成一种连接设备,用来将网络数据流连接到程序上。对于一个特定的网络连接,连线两端的计算机中各有一个套接字,这两个套接字之间有一条网络线路。服务器程序和客户端程序都通过套接字与网络线路打交道,从而可以忽略网络线路的硬件细节。因此,套接字的应用可以简化服务器与客户端之间通信的网络编程。
15.1.4 套接字(续)
流套接字:
– 流套接字使用传输控制协议( Transmission Control
Protocol,简称 TCP)进行数据通信。 TCP协议具有高可靠性,它能够检测到数据在传输过程中的丢失并重新传输,确保数据准确抵达。
数据报套接字:
– 数据报套接字使用用户数据报协议( User
Datagram Protocol,简称 UDP),它不能保证数据的无损传输。
15.2 流套接字通信
流套接字通信需要一条专用的连接,并且这条连接会一直保持直到被要求关闭。
与流套接字相关的类:
– ServerSocket
– Socket
15.2 流套接字通信(续)
为在服务器和客户端之间建立连接,服务器程序首先需要利用 ServerSocket在服务器某端口创建一个服务器套接字:
ServerSocket server=new
ServerSocket(port) ;
创建服务器套接字后,服务器程序就可以利用下述语句监听来自客户端的连接请求:
Socket socket=server.accept();
15.2 流套接字通信(续)
客户端可以利用下述语句向服务器发出连接请求:
Socket socket=new Socket(address,
port);
服务器程序的 accept()方法监听到客户端的连接请求后,将返回一个与该客户端相对应的套接字( Socket)对象。这样,便在服务器和客户端之间建立了一条套接字 ——套接字连接。
15.2 流套接字通信(续)
客户端 服务器端套接字套接字服务器套接字
1、请求连接
2、建立连接
15.2 流套接字通信(续)
从服务器和客户端套接字获取相应的
InputStream和 OutputStream对象,
InputStream in=socket.
getInputStream();
OutputStream out=socket.
getOutputStream();
15.2 流套接字通信(续)
关闭套接字:
socket.close();
server.close();
例 15-2 简单的服务器与客户端程序注意,先运行服务器程序,再运行客户端程序。
客户端程序源代码 运 行服务器程序源代码 运 行
15.2 流套接字通信(续)
例 15-3 服务多个客户的服务器程序注意,先运行服务器程序,再运行客户端程序。
客户端程序源代码 运 行服务器程序源代码 运 行
15.3 数据报
数据报套接字通信不需要专门的连接。它不能保证数据的准确抵达,也不能保证数据字节抵达的顺序与发送时相同,但速度要快得多。
实现数据报通信的类:
– DatagramSocket
– DatagramPacket
15.4 读取网上资源
URL( Uniform Resource Locator) 是统一资源定位器,表示 Internet上某一资源的地址 。 比如,http://www.sun.com/index.html
URL的基本组成部分:
– 资源使用的协议。 HTTP( Hypertext Transfer
Protocol)是 Web服务器和 Internet之间进行通信的一个通用标准。
– 存储资源的计算机的主机名或 IP地址。比如:
www.sun.com
– 资源。比如,index.html
15.4 读取网上资源(续)
java.net.URL的构造方法:
– URL(String spec)
– URL(URL context,String spec)
例:
try
{
URL u1=new URL("http://www.sun.com");
}
catch(MalformedURLException ex){}
15.4 读取网上资源(续)
openStream()
//从代表某文件的 URL对象中取得 InputStream数据流。
例 15-4 读取服务器上的文件源代码
15.5 浏览网页
15.5.1利用 applet浏览网页
15.5.2创建一个简单的浏览器
15.5.1 利用 applet浏览网页
getAppletContext().
showDocument(url);
例 15-5 利用 applet浏览网页源代码
15.5.2 创建一个简单的浏览器
JEditorPane
–setPage(url)
HyperlinkEvent
–getURL()
例 15-6 简单的浏览器程序源代码
15.6 习 题