版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
13.1网络编程基础13.2网络API的使用13.3基于TCP的Socket网络编程第13章Java网络编程本章教学内容:本章教学内容(续)13.3.1Java网络编程概述13.3.2基于TCP的Socket网络编程原理13.3.3基于TCP的Socket网络编程实现本章教学目标:理解计算机网络编程的概念理解TCP/IP协议规范理解域名与DNS的概念掌握基于URL的网络编程掌握基于TCP的C/S网络编程掌握基于Socket的低层次Java网络编程掌握基于Socket的多线程通信13.1网络编程基础
13.1.1网络类型按照网络的地理位置,可以将网络分为:局域网(LAN):一般限定在较小的区域内,小于10km的范围,通常采用有线的方式连接起来。城域网(MAN):规模局限在一座城市的范围内,10~100km的区域。广域网(WAN):网络跨越国界、洲界,甚至全球范围按照服务方式,可以将网络分为:客户机/服务器网络(Client/Server):服务器是指专门提供服务的高性能计算机或专用设备,客户机是用户计算机。对等网(Peer-to-Peer):对等网不要求文件服务器,每台客户机都可以与其他每台客户机对话,共享彼此的信息资源和硬件资源,组网的计算机一般类型相同。13.1.2TCP/IP协议
1.IPIP是互联网络协议。IP主要负责网络主机的定位,实现数据传输的路由选择。实际应用中使用域名地址,域名和IP之间的转换通过域名解析完成。IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件几乎没有任何要求。IP协议是一个无连接、不可靠的协议。在传输数据之前,它不交换控制信息,数据包只是传送到目的主机,并且假设能被正确的处理。由于IP协议并不重新传输已丢失的数据包或监测受损害的数据,所以IP协议是不可靠的。这种功能可以通过TCP来实现。
2.TCPTCP协议是一种端对端协议。TCP协议为两台计算机之间的建立一个连接、发送和接收数据以及终止连接。TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠;TCP协议具有自动调整“超时值”的功能,能很好地适应Internet上各种各样的变化,确保传输数值的正确。13.1.3网络地址
网络地址通常有两种标识方法,一种是由4个整数组成的一个32位的IP地址表示网络地址,如:4;另一种是通过域名表示网络地址,如:是枣庄学院网站的域名。1.IP地址IP地址是一个32位的二进制地址,分为4组,每组8位,由小数点分开,用四个字节来表示,每个字节的数值范围是0~255。IP地址按分为三类:A类地址的表示范围为:~55,默认网络掩码为:。
B类地址的表示范围为:~55,默认网络掩码为:。
C类地址的表示范围为:~55,默认网络掩码为:。
2.域名
域名(DomainName)是由一串用“.”分隔的字符串名成,用于标识计算机的电子方位。域名不仅便于记忆,而且在IP地址发生变化时,域名仍可保持不变。常用的域名分为:国际域名:也叫国际顶级域名国内域名:也叫国内顶级域名。二级域名:指顶级域名之下的域名。三级域名:一般应用于中小企业及个人注册使用。
3.
DNSDNS(DomainNameServer)是域名解析的服务器。通过DNS服务可以将用户输入的域名解析为与之相关IP地址,从而唯一确定该域名所绑定的域层次结构中的计算机和网络服务。13.2网络API的使用常用的网络类有:
URL类:统一资源定位器,封装了对网络资源的访问URLConnection类:URL指定的数据源的动态连接。InetAddress类:封装计算机的IP地址和域名。
13.2.1URL类URL是统一资源定位器的简称,表示Internet上某一资源的地址。通过URL可以访问Internet上的各种网络资源,比如最常见的WWW站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。一个完整的URL由协议名、主机名(主机IP)、端口号和文件路径四部分组成。
1.URL常用方法实例13-1根据指定的路径构造URL对象,并获取当前URL对象的相关属性。方法名功能说明publicURL(Stringspec)构造方法,根据指定的spec来创建一个URL对象publicURL(Stringprotocol,Stringhost,intport,Stringfile)构造方法,根据指定的协议、主机名、端口号、文件路径及文件名创建一个URL对象publicURL(Stringprotocol,Stringhost,Stringfile)构造方法,根据指定的协议、主机名、路径及文件名创建URL对象publicStringgetProtocol()获取该URL的协议名publicStringgetHost()获取该URL的主机名publicintgetPort()获取该URL的端口号,如果没有设置端口,返回-1publicStringgetFile()获取该URL的文件名publicStringgetRef()获取该URL在文件中的相对位置publicStringgetQuery()获取该URL的查询信息publicStringgetPath()获取该URL的路径publicStringgetRef()获得该URL的锚
2.获取网络资源读取网络资源数据的步骤为:(1)创建URL类的实例对象,使其指向给定的网络资源。(2)通过URL类的openStream()方法建立URL连接,返回输入流对象的引用。(3)通过BufferedReader或BufferedInputStream封装输入流。(4)读取数据并进行数据处理。(5)关闭数据流。实例13-2通过URL对象获取网络资源。
3显示URL资源中的HTML文件可以将URL资源内容读取到客户端,但是对于HTML文件,用户可能想看到网页的运行效果而不是网页的代码。javax.swing包中的JeditorPane容器可以解释、执行HTML文件,也就是说,如果把HTML文件读入到JeditorPane容器,该HTML文件就会被解释、执行,显示在JeditorPane容器中,这样用户就能看到网页的运行效果。实例13-3通过JeditorPane对象显示网络资源中的网页。
13.2.2InetAddress类
在Java中,使用包中的InetAddress类来封装IP地址和该地址的域名。InetAddress类内部隐藏了地址数字,它不需要用户了解如何实现地址的细节。InetAddress类没有构造方法,不能直接创建其对象,但可以通过该类的静态方法创建一个InetAddress对象或InetAddress数组。实例13-4通过InetAddress类获取本机的地址信息和指定域名的地址信息演示。13.3基于TCP的Socket网络编程在Java编程中,我们可以编写出控制台程序、桌面程序,也可以使用Java提供的网络编程类库编写出类似于QQ聊天系统、FTP服务器和Web服务器等的网络通信程序。
13.3.1Java网络编程概述所谓网络编程就是通过使用套接字来实现进程间通信的编程。网络编程从大的方面说就是从信息的发送到接收的过程,其主要工作就是在发送端把信息通过规定的协议分封装成包,在接收端按照规定的协议把包进行解析,从而提取出对应的信息,达到通信的目的。套接字(Socket)是一种基于网络通信的接口,是一种软件形式的抽象表述,用于表达两台机器之间在一个连接上的两个“终端”,即针对一个连接,每台机器上都有一个套接字,它们之间有一条虚拟的线缆,线缆的每一端都插入到一个套接字里。套接字为程序员屏蔽了网络的底层细节,例如媒体类型、信息包的大小、网络地址、信息的重发等。
13.3.2基于TCP的Socket网络编程原理TCP套接字用于在主机和Internet之间建立可靠的、双向的、持续的、点对点的流式连接。一个套接字可以用来建立Java的输入/输出系统到其他的驻留在本地机或Internet上的任何机器的程序的连接。利用基于TCP的Socket通信编程接口编写网络程序,其目的是在TCP/IP所组建网络的不同机器之间利用客户/服务器模式建立通信连接。为建立该连接,开发人员要提供服务器的IP地址和端口等基本的连接信息。
13.3.3基于TCP的Socket网络编程实现为了能够实现基于TCP的Socket网络编程,Java提供了两类TCP套接字:一种是服务器套接字(ServerSocket);另一种是客户端套接字(Socket)。ServerSocket类设计成在等待客户建立连接之前不做任何事的“监听器”。Socket类为建立连向服务器套接字以及启动协议交换而设计。利用Socket类的方法,就可以实现两台计算机之间的通信。
1.客户端程序设计Socket是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便地在网络上传递数据。Socket类常用方法:方法名功能说明publicSocket(Stringhost,intport)创建一个到主机host、端口号为port的套接字,并连接到远程主机publicSocket(InetAddresshost,intport)创建一个套接字,使用host中封装的主机信息、端口号为port,并连接到主机publicInetAddressgetInetAddress()返回连接到远程主机的地址,如果连接失败,则返回以前连接的主机publicintgetPort()返回Socket连接到远程主机的端口号publicintgetLocalPort()返回本地连接终端的端口号publicInputStreamgetInputStream()返回一个输入流,利用这个流就可以从套接字读取数据publicOutputStreamgetOutputStream()返回一个输出流,可以在应用程序中写数据到套接字的另一端publicsynchronizedvoidclose()关闭当前Socket连接
客户端编程步骤如下:(1)根据指定服务器地址和进行连接的端口号创建一个Socket对象,与服务器端建立连接。(2)调用Socket类的getInputStream()方法和getOutputStream()方法获得该套接字所对应的输入流和输出流。(3)通过输入流和输出流与服务器进行数据通信。(4)通信结束后,关闭输入流、输出流以及套接字Socket。
2.服务器端程序设计
服务器套接字(ServerSocket)运行在服务器上,并监听在特定端口的TCP连接。ServerSocket类的常用方法方法名功能说明publicServerSocket(intport)构造方法,根据指定端口创建ServerSocket实例publicSocketaccept()这是一个阻塞方法,它停止执行代码流,并等待下一个客户端的连接。当客户端请求连接时,accept()方法返回一个Socket对象publicvoidclose()关闭当前ServerSocket实例publicInetAddressgetInetAddress()返回当前ServerSocket实例的地址信息publicintgetLocalPort()返回当前ServerSocket实例的服务端口
服务器端编程步骤如下:(1)根据指定端口创建一个新的ServerSocket对象。(2)调用ServerSocket的accept()方法,在指定的端口监听来自客户端的连接。当有客户端与该服务器端建立连接时,accept()方法将返
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年技术开发合同:人工智能应用研究与实现
- 2024-2030年全球及中国氧气发生器行业供需态势及前景规划分析报告
- 2024-2030年全球及中国月桂酸酯行业产销规模及投资趋势预测报告
- 2024-2030年全球及中国数字定时器插座行业运营动态及销售效益预测报告
- 2024-2030年全球及中国应急培训行业现状规模及投资可行性研究报告
- 2024-2030年全球及中国婴儿木床行业销售趋势及营销策略分析报告
- 2024-2030年全球及中国回归数据分析软件行业运行情况及投资战略研究报告
- 2024-2030年全球及中国便携式空气采样器行业发展态势及投资前景展望报告
- 2024-2030年全球与中国特殊沸点溶剂行业现状规模及未来发展前景预测报告
- 2024-2030年主控制开关行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 行政复议法-形考作业3-国开(ZJ)-参考资料
- MOOC 职场英语-西南交通大学 中国大学慕课答案
- JTG C10-2007 公路勘测规范
- 联合办公协议书范本
- SCA涂胶机内部培训资料
- GB/T 5237.1-2017铝合金建筑型材第1部分:基材
- GB/T 18284-2000快速响应矩阵码
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- EXCEL 支票打印模板
- 称念诸佛名号功德(3)
- 疯狂动物城歌词.doc
评论
0/150
提交评论