JSE-15(网络编程)

上传人:宝路 文档编号:6462274 上传时间:2017-11-23 格式:PPTX 页数:45 大小:2.77MB
返回 下载 相关 举报
JSE-15(网络编程)_第1页
第1页 / 共45页
JSE-15(网络编程)_第2页
第2页 / 共45页
JSE-15(网络编程)_第3页
第3页 / 共45页
JSE-15(网络编程)_第4页
第4页 / 共45页
JSE-15(网络编程)_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《JSE-15(网络编程)》由会员分享,可在线阅读,更多相关《JSE-15(网络编程)(45页珍藏版)》请在金锄头文库上搜索。

1、第 15章 网络 编程讲师:李贺飞新浪微博:尚硅谷 -李贺飞本章内容l第一节 网络编程基础知识l第二节 网络通讯要素l第三节 基于 TCP协议的网络编程l第四节 基于 UDP协议的网络编程l第五节 URL编程第一节 网络编程基础知识网络编程概述 Java是 Internet 上 的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很 容易开发 常见的网络应用程序。 Java提供的网络类库,可以实现无 痛的 网络连接 ,联网 的底层细节被隐藏 在 Java 的 本机安装系统里,由 JVM 进行 控制。 并且 Java 实现 了一个跨平台的网络库, 程序员面对的是一个统一的网络编程环境 。网

2、络 基础 l计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。l网络 编程的 目的:直接 或间接地通过网络协议与其它计算机进行通讯 。l网络 编程中有两个主要的 问题:如何 准确地定位网络上一台或多台 主机找到 主机后如何可靠高效地进行数据传输 。地球村l如何实现网络中的主机互相通信:通信双方地址 一定的 规则 (有 两套参考 模型) OSI参考模型 :模型过于理想化,未能在因特网上进行广泛推广 TCP/IP参考模型 (或 TCP/IP协议 ):事实上的国际标准。网络

3、基础 网络通信协议OSI参考模型 TCP/IP参考模型 TCP/IP参考模型各层对应协议应用层应用层 HTTP、 ftp、telnet、 DNS表示层会话层传输层 传输层 TCP、 UDP、 网络层 网络层 IP、 ICMP、 ARP数据链路层物理 +数据链路层 Link物理层数据封装 数据拆封第二节 网络通讯要素通讯要素 1: IP 和 端口号l IP 地址: InetAddress唯一的标识 Internet 上 的 计算机本地回环地址 (hostAddress): 127.0.0.1 主机名 (hostName):localhost不易记忆l 端口 号 标识正在计算机上运行的进程(程序

4、) 不同的进程有不同的端口号 被规定为一个 16 位的整数 065535。其中, 01023被预先定义的服务通信占用( 如 MySql占用端口 3306, http占用端口 80等)。除非我们需要访问这些特定服务,否则,就 应该使用 102465535 这些端口中的某一个进行通信,以免发生端口冲突 。 l 端口 号与 IP地址的组合得出一个网络套接字 。QQ QQ89988998MSN MSN7898 7898192.168.0.1 192.168.0.2InetAddress类 l Internet上的主机有两种方式表示地址 :域名 (hostName): IP 地址 (hostAddres

5、s): 202.108.35.210l InetAddress类主要表示 IP地址,两个子类: Inet4Address、Inet6Address。l InetAddress 类对象含有一个 Internet 主机地址的域名和 IP地址: 和 202.108.35.210。l 域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器( DNS)负责将域名转化成 IP地址,这样才能和主机建立连接。 -域名解析DNS42.121.6.242.121.6.2网络服务器C:WindowsSystem32driversetchosts先找本机 hosts,是否有输入的域名地址,没有的话,再通过 D

6、NS服务器,找主机。InetAdress类l InetAddress类没有提供公共的构造器,而是提供了如下两个静态方法来获取 InetAddress实例l InetAddress提供了如下几个常用的方法InetAdress 代码示例通讯要素 2:网络通信协议l网络通信协议计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。l通信协议分层的思想由于结点之间联系很复杂,在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于

7、系统的开发和扩展。TCP/IP协议簇 l 传输层协议中有两个非常重要的协议: 传输控制协议 TCP(Transmission Control Protocol) 用户数据报协议 UDP(User Datagram Protocol)。l TCP/IP 以 其两个主要协议:传输控制协议 (TCP)和网络互联协议 (IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议 。l IP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。l TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构, 即 物理链路层 、 IP层、传输层和应用层 。第

8、三节 基于 TCP协议的网络编程TCP 和 UDPl TCP协议: 使用 TCP协议前,须 先建立 TCP连接,形成传输数据通道 传输前,采用 “三次握手 ”方式,是可靠的 TCP协议进行通信的两个应用 进程:客户端、服务端 在连接中可进行大数据量的传输 传输完毕,需释放已建立 的 连接,效率低l UDP协议: 将数据、源、目的封装成数据包,不需要建立连接 每个数据报的大小限制在 64K内 因无需连接,故是不可靠的 发送数据结束时无需释放资源,速度快l 利用套接字 (Socket)开发 网络应用程序早已被广泛的采用,以至于成为事实上的标准 。l 通信的两端都要有 Socket,是两台机器间通信

9、的端点l 网络通信其实就是 Socket间的通信。l Socket允许程序把网络连接当成一个流, 数据 在两个 Socket间通过 IO传输 。l 一般主动发起通信的应用程序属 客户端 ,等待 通信请求的 为 服务 端Socketl Java语言的基于套接字编程分为 服务端编程 和客户端编程,其通信模型如 图所示:基于 TCP的 Socket通信基于 Socket的 TCP编程Socket类的常用方法方法 功能InetAddress getLocalAddress() 返回对方 Socket中的 IP的 InetAddress对象int getLocalPort() 返回本地 Socket中的

10、端口号InetAddress getInetAddress() 返回对方 Socket中 IP地址int getPort() 返回对方 Socket中的端口号void close() throws IOException关闭 Socket,不可在以后的网络连接中使用,除非创建新的套接字InputStream getInputStream() throws IOException获取与 Socket相关联的字节输入流,用于从 Socket中读数据。OutputStream getOutputStream() throws IOException获取与 Socket相关联的字节输出流,用于向 So

11、cket中写数据。ServerSocket类的常用方法方 法 功 能Socket accept() throws IOException 等待客户端的连接请求,返回与该客户端进行通信用的 Socket对象void setSoTimeout(int timeout) throws SocketException 设置 accept()方法等待连接的时间为timeout毫秒。若时间已到,还没有客户端连接,则抛出 InterruptedIOException异常, accept()方法不再阻塞,该倾听 Socket可继续使用。若 timeout值为 0,则表示accept()永远等待。该方法必须在倾

12、听Socket创建后,在 accept()之前调用才有效。void close()throws IOException 关闭监听 SocketInetAddress getInetAddress() 返回此服务器套接字的本地地址int getLocalPort() 返回此套接字在其上监听的端口号SocketAddress getLocalSocketAddress() 返回此套接字绑定的端点的地址基于 Socket的 TCP编程l 客户端 Socket的工作过程包含以下四个基本的步骤: 创建 Socket: 根据指定服务端的 IP 地址 或端口号 构造 Socket 类 对象 。若服务器 端响

13、应,则建立客户端到服务器的通信线路 。若连接失败,会出现异常。 打开 连接 到 Socket 的 输入 /出 流: 使用 getInputStream()方法 获得输入流, 使用 getOutputStream()方法 获得输出 流,进行数据传输 按照 一定的协议 对 Socket 进行 读 /写 操作: 通过 输入流读取服务器放入线路的信息(但不能读取自己放入线路的信息),通过输出流将信息写入线程 。 关闭 Socket: 断开 客户端到服务器的连接,释放线路 客户端创建 Socket对象l 客户端 程序可以使用 Socket类创建对象, 创建的同时会自动向服务器方发起连接 。 Socket

14、的构造方法是: Socket(String host,int port)throws UnknownHostException,IOException: 向 服务器 (域名是 host。端口号为 port)发起 TCP连接,若成功,则创建 Socket对象,否则抛出异常 。 Socket(InetAddress address,int port)throws IOException: 根据InetAddress对象所表示的 IP地址以及端口号 port发起连接 。l 客户端建立 socketAtClient对象的过程就是向服务器发出套接字连接请求Socket s = new Socket(“1

15、92.168.40.165”,9999);OutputStream out = s.getOutputStream();out.write(“hello”.getBytes();s.close();l服务器 程序的工作过程包含以下四个基本的 步骤:调用 ServerSocket(int port) : 创建 一个服务器端套接字,并绑定到指定端口上 。用于监听客户端的请求。调用 accept(): 监听 连接请求,如果客户端请求连接,则接受连接,返回通信套接 字 对象 。调用 该 Socket类对象的 getOutputStream() 和 getInputStream (): 获取 输出流和输入流,开始网络数据的发送和接收。关闭 ServerSocket和 Socket对象: 客户端访问结束,关闭通信套接字 。基于 Socket的 TCP编程服务器 建立 ServerSocket 对象l ServerSocket 对象 负责等待客户端请求建立套接字连接,类似邮局某个窗口中的业务员。也就是说, 服务器必须事

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号