*; import java.awt.event.*; import java.applet.AppletContext; import javax.swing.*; import javax.swing.event.*; public class ShowDocument extends JApplet { public void init() { JButton goButton = new JButton("Link to sohu"); Container myContainer = getContentPane(); myContainer.add( new JLabel("Link to SOHU"),BorderLayout.NORTH); myContainer.add(goButton,BorderLayout.SOUTH); goButton.addActionListener(new ButtonListener()); }
9
11.1.2 关于URI(续)
——例11_1
Java 网 络 程 序 设 计 的 基 本 概 念
} class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { try { URL newDocument = new URL("sohu"); AppletContext browser = getAppletContext(); browser.showDocument(newDocument); } catch(Exception URLException) {} } }
10
11.1.3 基于套接字的有连接通信
Java 网 络 程 序 设 计 的 基 本 概 念
?
基于套接字(socket)的有连接通信
– 使用TCP协议 – 一个socket必须在发送数据之前与目的地的 socket取得连接 – 一旦连接建立了,sockets就可以使用一个流接 口完成打开-读-写-关闭,所有的发送的信息都 会在另一端以同样的顺序被接收 – 面向连接的操作比无连接的操作效率低,但是 数据的安全性高
11
11.1.3 基于套接字的有连接通信(续)
——服务器端
Java 网 络 程 序 设 计 的 基 本 概 念
?
用Java建立简单的服务器程序需要五个步骤
– Step1:创建ServerSocket对象
ServerSocket myServer = new ServerSocket (int port, int backlog);
?
Port 指定一个可用的端口号,用来定位服务
器上的服务器应用 程序 backlog指定能够连接到服务器的最多客户数。连接客户达到由 backlog指定的最大客户数量时,服务器将拒绝客户连接
?
– Step 2:通过ServerSocket的accept方法监听客户连接,服 务器无限期的监听客户连接
Socket connection = myServer.accept();
?
有一个客户连接时,将产生并返回一个socket
12
11.1.3 基于套接字的有连接通信(续)
——服务器端
Java 网 络 程 序 设 计 的 基 本 概 念
– Step 3:通过Socket的方法getInputStream和 getOutputStream获取InputStream和OutputStream对象; 通常将其他流类型和它们联系起来,如:
ObjectInputStream input = new ObjectInputStream( connection.getInputStream( ) ); ObjectOutputStream output = new ObjectOutputStream( connection.getOutputStream( ) );
– Step 4:客户和服务器通过OutputStream和InputStream对 象进行通信
– Step 5:通信传输完毕,服务器通过调用流和套接字的 close方法关闭连接
13
11.1.3 基于套接字的有连接
通信(续)
——客户端
Java 网 络 程 序 设 计 的 基 本 概 念
?
在客户端建立简单连接的思路类似,可分为四步
– Step 1:建立一个Socket,实现与服务器的连接
Socket connection = new Socket ( InetAddress address, int port); ? address:服务器IP地址。port:端口号 ? 连接成功,将返回一个Socket,否则产生异常
– Step 2:通过getInputStream和getOutputStream分别获取 Socket的InputStream和OutputStream的引用。同样,也可 以将其他流类型与InputStream和OutputStream联系起来 – Step 3:客户与服务器通过InputStream和OutputStream进行 通信 – Step 4:传输完毕后,通过调用流和套接字的close方法关闭 连接
14
11.4 数据报通信
Java 网 络 程 序 设 计 的 基 本 概 念
?
数据报通信(Datagram Communication)
– 使用用户数据报协议 ( User Datagram Protocol, UDP)
? ?
与TCP不同的一种协议 不能保证数据会被成功地送达,也不保证数据抵达的次序与送出的次 序相同,所以也被称为“不可靠的通信协议”,虽然可靠性不高,但 是它的速度很快,所以有些场合也有很大的用处
– 服务器通过DatagramSocket接收或发送信