710 likes | 928 Views
高级 Internet 程序设计. Java 网络程序设计. 主要内容. 第一部分 TCP/IP 与 Internet 程序设计 TCP/IP 基础 Java 简介 Socket SMTP 通讯协议 POP3 通讯协议 服务器端的 FTP 通讯协议. 客户端的 FTP 通讯协议 HTTP 通讯协议与 Web 服务器 Java Web 浏览器 聊天程序的客户端/服务器端 网络游戏 JSSE 与 HTTPS 服务器. 第二部分 企业网络技术 企业解决方案 Java 档案 Java Plug-in 与 HTML Converter
E N D
高级Internet程序设计 Java网络程序设计
主要内容 • 第一部分 TCP/IP与Internet程序设计 • TCP/IP基础 • Java简介 • Socket • SMTP通讯协议 • POP3通讯协议 • 服务器端的FTP通讯协议
客户端的FTP通讯协议 • HTTP通讯协议与Web服务器 • Java Web浏览器 • 聊天程序的客户端/服务器端 • 网络游戏 • JSSE与HTTPS服务器
第二部分 企业网络技术 • 企业解决方案 • Java档案 • Java Plug-in 与HTML Converter • Java安全性原则 • 三层体系结构Socket与JDBC • JavaMail API • Java Web Start • J2EE连接器架构
TCP/IP基础 1.1 历史 1)ARPANET: 仅仅用于同类软、硬件系统; 使用IMP进行主机连接; NWG协议; http://som.csudh.edu/cis/ 2)1974年TCP/IP 3)BSD Unix+TCP/IP->BSD API Windows Socket API Java.net API
1.3 TCP与UDP • TCP: Telnet HTTP FTP SMTP • UDP:OICQ NFS DNS TFTP • BOOTP SNMP • 1.4 IP地址(IPv4、IPv6) • IP分类、InterNIC • 1.5 域名系统 • DNS、 顶级 、查询算法 • 1.6 通信端口 • 大小范围 • 1.7 RFC文件 • 格式、查询
1.8 网络的拓扑结构 • 对等、C/S • 1.9 网络分类 1)局域网:几米~1公里 2) 城域网:10公里~100公里 3) 广域网: 4) Internet:
Java简介 • 2.1 Java的版本 • Java 2有3种版本:J2ME、J2SE、J2EE。 • 2.2 Java的应用范畴 • Java从应用的范畴可分为5类: • 2-Tier Client-and-Server Architecture • 2-Tier HTML-based Architecture • 3-Tier HTML-based Architecture
3-Tier Applet-based Architecture • Java Web Start • 2.2.1 2-Tier Client-and-Server Architecture 客户 服务器 Java Application Socket JDBC EJB/CORBA computer computer
浏览器 Web服务器 HTML Java Servlet JSP • 2.2.2 2-Tier HTML-based Architecture computer computer
浏览器 后台服务器 Web容器 HTML Socket/RMI JDBC EJB/CORBA Java Servlet JSP • 2.2.3 3-Tier HTML-based Architecture computer computer computer
浏览器 后台服务器 Web容器 Java Applet Socket/RMI JDBC EJB/CORBA Java Servlet JSP • 2.2.4 3-Tier Applet-based Architecture computer computer computer
computer Internet Explorer • 2.2.5 Java Web Start computer computer 服务器端Java应用程序 Java Web Start
应用程序 Socket API TCP UDP 网络 Socket • 3.1 Berkeley Socket • Berkeley Socket Interface Berkeley Software Distribution • Berkeley网络套接字
发送 接收 computer computer 接收 发送 • 分为Stream Socket(面向连接协议) 和Datagram Socket(无连接协议)两类 • 1)Stream Socket • 2)Stream Socket(TCP)在服务器端的开发流程 • 3) Stream Socket(TCP)在客户器端的开发流程
Socket() Socket() Bind() Listen() Accept() Connect() Recv()/read() Send()/write() Closesocket() Closesocket()
发送 接收 computer computer Socket() Bind() Recvfrom() Sendto() Closesocket() • 4)Datagram Socket • 5)Datagram Socket (UDP) 应用程序
3.2 Microsoft Windows Socket • 1)WinSock API • 体系结构与BSD Socket API相似,同时不同版本WinSock具有兼容性。可分为四类:BSD Socket API、WinSock Extended API、转换函数和数据库函数。 • 2)BSD Socket API • 3)WinSock扩展函数 • 4)转换函数 • 5)数据库函数
6)WinSock Stream Socket客户端/服务器端 • 7)WinSock Datagram Socket • 3.3 Java Socket • Java.net支持Socket API,有六类函数。 • 1)处理URL • 2)处理主机名称及IP地址 • 3)处理UDP通讯协议 • 4)处理TCP通讯协议
Datagram socket ServerSocket DatagramPacket 接受 Socket 接收 读 写 发送 写 读 关闭 关闭 关闭 服务器端 客户端 • 5)处理网络(Authentication)及权限(Permission) • 6)内容处理器(ContentHandle) • Java在TCP和UDP的体系结构如下:
3.4 C/S模式实例演示 • 1)hello world程序 • 2)echo程序 • 3)多线程服务器程序 • 4)客户端图形界面的设计
3.5 多线程网络编程 • 3.5.1 创建线程 • 1)通过扩展Thread类来构造 • Public class MyThread extends Thread • { • public void run() • { //线程体代码 • } • MyThread testThread=new MyThread();
2)通过实现Runnable接口来构造 • Public interface Runnable { • public abstract void run(); • } • Public class MyRunnable implements Runnable { • public void run() • {//线程体代码 • } • } • MyRunnable firstRunnable=new MyRunnable(); • Thread TestThread=new Thread(firstRunnable);
3.5.2 线程的启动 • 3.5.3 线程状态 • Wait notify notifyAll volatile synchronized • 3.6 异常机制 • 3.6.1 使用try、catch、finally、throw关键字 • 3.6.2 异常处理的设计原则 • 1)处理与方法逻辑分离 • 2)合理运用异常的父类 • 3.7 可视化用户界面开发
两种支持API: • AWT Abstract Window Toolkit • JFC/Swing Java Foundation Classes • 3.8 Java的流 • 3.8.1 字符流 • 处理字符流:Reader类、Writer类 • 处理字节流:InputStream类、OutputStream类 • 3.8.2 文件流
3.8.3 管道流 • 3.8.4 连接输出数据 • SequenceInputStream类 • Enumeration类 • 3.8.5 过滤流 • 1)DataInputStream与DataOutputStream • 2)BufferInputStream与BufferOutputStream • 3)CheckedInputStream与CheckedOutputStream • 4)PushbackInputStream • 5)PrintStream
3.8.6 对象的序列化 • ObjectInputStream类与ObjectOutputStream类 • 3.8.7 网络中的流 • 首先生成一个URL类,然后对相应的资源进行不同类型的处理。 • 1)得到HTML的流 • 2)获得网络图像 • 3)读取网络表信息 • 3.8.8 压缩流 • 3.8.9 中文流
SMTP通讯协议 • 4.1 SMTP简介 • 1)Spooling • 2)邮件头 • 邮件内容 • RFC822 • 3)RFC821 • 命令
发件端 连接(端口25) 邮件服务器 准备邮件服务 邮件服务器响应 成功 邮件来源 成功 接收邮件 成功 接收数据 开始邮件传递 发送邮件头部分 发送邮件内容部分 发送CRLF、CRLF结尾 成功 退出 退出 • 流程:
POP3通讯协议 • 5.1 POP3介绍 • RFC1081 • 分为三个阶段: • (1)Authorization: • (2)Transaction: • (3)Update
发件端 连接(端口110) 邮件服务器 来自邮件服务的欢迎 用户登陆 需要输入密码 密码确认 准备接收邮件 STAT +OK<#><size> LIST[<mail#>] +OK… RETR<mail#> +OK<size> 邮件头和内容 退出 POP3服务器停止服务 • 流程图:
用户界面 协议解释器 协议解释器 数据传送过程(DTP) 数据传送过程(DTP) 文件系统 文件系统 FTP客户端 FTP服务器端 服务器端的FTP通讯协议 • 6.1 FTP简介 • 1)FTP体系结构
2) FTP指令 • RFC0959 • 访问指令 • 传输指令 • 服务指令 • 3)响应信息 • 4)FTP流程
发件端 连接(端口21) 邮件服务器 服务器已准备 用户名 需要密码 密码 用户登陆 端口设置 命令成功 传送文件 打开ASCII码模式 传输完成 退出 221 Goodbye
客户端的FTP通讯协议 • 7.1 FTP API介绍 • Sun.net和sun.net.ftp • 相关类: • FtpClient、FtpInputStream、NetworkClient、TelnetInputStream、TelnetOutputStream、TransferProtocolClient
HTTP通讯协议与Web服务器 • 8.1 HTTP通讯协议 • (1)HTTP头 • (2)HTTP方法 • (3)HTTP响应信息 • (4)URL • (5)HTTP流程
连接 Web浏览器 Web服务器 HTML请求 HTML响应 关闭连接 • 8.2 Web服务器示例
Java Web浏览器 • 9.1 Java Web浏览器核心 • JEditorPane • 与VB、Dephi、C++ Builder比较. • 9.2 HyperlinkListener • 9.3 动画显示网页下载状态 • 9.4 查看及保存网页源代码 • 9.5 网页浏览功能与发送E-mail
9.6 设置HTTP代理服务器 • 9.7 HTTP程序演示 • 9.8 HTTProxy程序演示
聊天程序的客户端/服务器端 • 10.1 聊天程序的客户端-Java Applet • 10.2 聊天程序的客户端-Java Application • 10.3 聊天程序的服务器程序设计 • 逻辑自行定义 • 处理连接和信息传递 • 10.3聊天程序演示
网络游戏 • 11.1 游戏体系结构与设置 • 11.2 游戏服务器 • 11.3 游戏客户端界面
JSSE与HTTPS服务器 • 12.1 SSL • Java安全性原则 • Java身份证和授权服务(Java Authentication and Authorization Service, JAAS) • Java加密扩展(Java Cryptography Extension, JCE) • Java安全套接字扩展(Java Secure Socket Extension, JSSE)
功能 • 1)数据加密(Data Encryption) SSL的体系结构
Client Hello 客户端 Server Hello 服务器端 认证 认证请求 服务器公钥交换 服务器完成 认证 客户端公钥交换 认证鉴定 更改密码说明 完成 更改密码说明 完成 被加密的数据 SSL Handshake • RSA、Diffie-Hellman • 2)数字签名 • 3)SSL建立完整的安全性连接