1、2023-6-312023-6-32本章总体纲要 统一资源定位地址统一资源定位地址(URL)基于基于TCP的网络程序设计的网络程序设计 基于基于UDP的网络程序设计的网络程序设计 基于基于SSL的网络程序设计的网络程序设计2023-6-33Internet地址 在在Internet上的计算机通过上的计算机通过IP(Internet Protocol)地址标识地址标识 示例示例:216.239.53.100 域名域名: 类类 .InetAddress用来表示用来表示Internet地址地址2023-6-34创建类InetAddress的实例对象 类类 InetAddress class 并不具有
2、并不具有public的构造方法的构造方法 但可以通过下列方法构造但可以通过下列方法构造:static InetAddress getByAddress(byte addr)static InetAddress getByName(String host)2023-6-35URL 类类 URL 是是网络资源定位器网络资源定位器(Uniform Resource Locator),指向网页指向网页(World Wide Web)上的一个资源上的一个资源 这里的资源可以是文件这里的资源可以是文件/目录,也可以是一目录,也可以是一些复杂的对象,如数据库或搜索引擎些复杂的对象,如数据库或搜索引擎(sea
3、rch engine)2023-6-36URL的格式(Protocol)(Host):PortFile#Reference 示例示例 http:/www.ncsa.uiuc.edu:8080/demoweb/urlprimer.html#INSTALL http:/ ftp:/166.111.233.143/java/mailto:2023-6-37说明 大多数大多数URL可以分成五个部分可以分成五个部分:Protocol Host Port File Reference,有时也称为有时也称为section 或或 anchor 但并不都是必需的但并不都是必需的2023-6-38端口号:Port
4、 端口号端口号(Port)范围范围:0-65535(16 bits)小于小于1024:用来对应特定的服务用来对应特定的服务(例如例如:telnet,SMTP,ftp等等等等)服务端与客户端必须采用相同的端口号服务端与客户端必须采用相同的端口号2023-6-39类:.URL 类类.URL的实例对象表示具体的的实例对象表示具体的 URL public final class URL 类类.URL的中构造方法的中构造方法:public URL(String u)throws MalformedURLException public URL(String protocol,String host,St
5、ring file)throws MalformedURLException public URL(String protocol,String host,int port,String file)throws MalformedURLException2023-6-310剖析剖析 URL 类类 .URL 具有五个成员方法,可具有五个成员方法,可以用来获取以用来获取URL的五个部分的五个部分:public String getProtocol()public String getHost()public int getPort()public String getFile()public St
6、ring getRef()2023-6-311示例:示例:URL例程例程public static void main(String args)try URL u=new URL(http:/ e)。/try-catch结构结束结构结束 /方法方法main结束结束MalformedURLExceptionu.getPort()2023-6-312本章总体纲要 统一资源定位地址统一资源定位地址(URL)基于基于TCP的网络程序设计的网络程序设计 基于基于UDP的网络程序设计的网络程序设计 基于基于SSL的网络程序设计的网络程序设计2023-6-313传输控制协议TCP 传输控制协议传输控制协议T
7、CP(Transfer Control Protocol)是一种基于连接的协议,可以是一种基于连接的协议,可以在两台计算机之间提供可靠的数据传输在两台计算机之间提供可靠的数据传输 基于连接的协议基于连接的协议 服务器端与客户端通过服务器端与客户端通过TCP协议进行通讯协议进行通讯 TCP,反过来反过来,运用了运用了IP协议协议 IP 协议只用来处理数据包协议只用来处理数据包2023-6-314TCP/IP 网络模型服务器端服务器端ServerSocket(port#)ServerSocket.accept()OutputStreamInputStreamSocket.close()客户端客户端
8、Socket(host,port#)OutputStreamInputStreamSocket.close()2023-6-315类 .Socket 类类.Socket允许如下的四种基本允许如下的四种基本操作操作1.连接到远程的机器连接到远程的机器2.发送数据发送数据3.接收数据接收数据4.关闭连接关闭连接2023-6-316类.Socket中的成员方法 构造方法构造方法 getInputStream():返回该返回该socket所对所对应的输入流应的输入流 getOutputStream():返回该返回该socket所对所对应的输出流应的输出流2023-6-317创建类 Socket 的实例
9、对象 构造方法构造方法Socket()Socket(InetAddress address,int port)Socket(InetAddress address,int port,InetAddress localAddr,int localPort)Socket(String host,int port)Socket(String host,int port,InetAddress localAddr,int localPort)示例示例:Socket javaSite=new Socket(,80);2023-6-318示例示例:J_Server.java/基于基于TCP通讯例程的服务器
10、端程序通讯例程的服务器端程序import java.io.DataOutputStream;import .ServerSocket;import .Socket;public class J_Server public static void main(String args)try ServerSocket server=new ServerSocket(5000);while(true)Socket s=server.accept();System.out.println(服务器端接收到来自客户端的连接服务器端接收到来自客户端的连接);DataOutputStream dataOut =
11、new DataOutputStream(s.getOutputStream();dataOut.writeUTF(服务器端向客户端问好服务器端向客户端问好);dataOut.close();s.close();/while循环结束循环结束 catch(Exception e)/try-catch结构结束结构结束 /方法方法main结束结束/类类J_Server结束结束指定服务器端所采指定服务器端所采用的端口号用的端口号等待并监听来自客等待并监听来自客户端的连接户端的连接获得套接字所对应获得套接字所对应的输出流的输出流2023-6-319示例示例:基于基于TCP通讯例程的客户端程序通讯例程的客
12、户端程序J_Client.javaimport java.io.DataInputStream;import .Socket;public class J_Client public static void main(String args)try Socket s=new Socket(localhost,5000);DataInputStream dataIn =new DataInputStream(s.getInputStream();System.out.println(客户端接收到客户端接收到:+dataIn.readUTF();dataIn.close();s.close();c
13、atch(Exception e)/try-catch结构结束结构结束 /方法方法main结束结束/类类J_Client结束结束建立与服务器端的连接建立与服务器端的连接(参数:参数:服务器的主机各,端口号服务器的主机各,端口号获得套接字所对应获得套接字所对应的输入流的输入流2023-6-320本章总体纲要 统一资源定位地址统一资源定位地址(URL)基于基于TCP的网络程序设计的网络程序设计 基于基于UDP的网络程序设计的网络程序设计 基于基于SSL的网络程序设计的网络程序设计2023-6-321基于UDP的网络程序设计 UDP(User Datagram Protocal,用户数用户数据报协议
14、据报协议)一种简单的不可靠的无连接的一种简单的不可靠的无连接的网络数据传输协议网络数据传输协议2023-6-.DatagramPacket 构造方法构造方法public DatagramPacket(byte buf,int offset,int length,InetAddress address,int port)成员方法成员方法public InetAddress getAddress()public int getPort()2023-6-.DatagramSocket 成员方法成员方法public void send(DatagramPacket p)throws IOExcepti
15、onpublic void receive(DatagramPacket p)throws IOException2023-6-324本章总体纲要 统一资源定位地址统一资源定位地址(URL)基于基于TCP的网络程序设计的网络程序设计 基于基于UDP的网络程序设计的网络程序设计 基于基于SSL的网络程序设计的网络程序设计2023-6-325基于SSL的网络程序设计 SSL(secure Socket Layer,安全套接层安全套接层)SSL协议的目的是提高网络通信的保密性协议的目的是提高网络通信的保密性和可靠性。和可靠性。密钥和证书管理工具密钥和证书管理工具keytool 基于基于SSL的服务器端和客户端程序的服务器端和客户端程序 自定义安全提供程序和密钥管理器自定义安全提供程序和密钥管理器