




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第12章 Java网络编程,学习导读,用Java开发网络软件非常方便且功能强大,Java用于开发网络程序的API均位于包和中。 在本章中我们将首先介绍Java网络编程中扮演重要角色的InetAddress类,再介绍套接字(Socket)的概念,同时以实例说明如何使用Network API操纵套接字。 最后简单介绍在非连接的UDP协议下如何进行网络通讯。,课程结构,InetAddress类 面对连接的流式套接字 面向非连接的数据报,12.1 InetAddress简介,InetAddress描述了32位或128位IP地址,要完成这个功能,InetAddress类主要依靠Inet4Address
2、和 Inet6Address两个支持类。 这三个类是继承关系,InetAddrress是父类,Inet4Address 和 Inet6Address是子类。,12.1 InetAddress简介,以通过下面的5个静态方法来创建一个InetAddress对象或InetAddress数组 : (1)getAllByName(String host)方法 (2)getByAddress(byte addr)方法 (3)getByAddress(String host, byte addr)方法 (4)getByName(String host)方法 (5)getLocalHost()方法 上面讲到的
3、方法均提到返回一个或多个InetAddress对象的引用,12.1 InetAddress简介,InetAddress和它的子类型对象处理主机名到主机IPv4或IPv6地址的转换 例:InetAddress ia = InetAddress.getByName(); 见例12。1,12.2 面向连接的流式套接字,1 什么是套接字 Socket可以看成在两个程序进行通信连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,12.2 面向连接的流式套接字,在两个网络应用程序之间发送和接收信息时需要建立一个可靠的连接,流套接字依靠TCP协议来保
4、证信息正确到达目的地。 在C/S程序中,包括了相关联的三个类: InetAddress Socket ServerSocket,12.2 面向连接的流式套接字,2 ServerSocket类 服务器程序套接字 构造函数: ServerSocket(int port);port参数传递端口号 ,如果在这时出现错误将抛出IOException异常对象 接下来服务程序进入无限循环之中。 无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定
5、了客户程序的IP地址或端口号。,12.2 面向连接的流式套接字,例:该程序将创建一个ServerSocket对象来监听端口10000的连接请求,如果成功,服务程序将等待连接输入,开始一个线程处理连接,并响应来自客户程序的命令。 见例12。2,12.2 面向连接的流式套接字,3 Socket类 当客户程序需要与服务器程序通信时,客户程序在客户机创建一个socket对象 构造函数: Socket(InetAddress addr, int port); Socket(String host, int port); 可能通过调用Socket的 getInputStream()方法从服务程序获得输入流
6、读传送来的信息 可能通过调用Socket的 getOutputStream()方法获得输出流来发送消息,12.2 面向连接的流式套接字,例:这个程序将创建一个Socket对象,Socket将访问运行在指定主机端口10000上的服务程序,如果访问成功,客户程序将给服务程序发送一系列命令并打印服务程序的响应 见例12。3,12.3 面向非连接的数据报,1 UDP简介 (User Datagram Protocal) UDP位于第四层传输层,处于IP协议的上一层。 UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。 当报文发送之后,是无法得知其是否安全完整到达的。,12.3 面向非连接的数据
7、报,2 DatagramPacket类 DatagramPacket类用于处理报文,它将Byte数组、目标地址和目标端口等数据包装成报文或者将报文拆卸成Byte数组 构造函数: 1)DatagramPacket(byte buf, int length); 其中buf参数包含了一个对保存自寻址数据报信息的字节数组的引用,length表示字节数组的长度 可以通过调用方法setAddress(InetAddress addr)和setPort(int port)添加上数据报地址和端口信息,12.3 面向非连接的数据报,2)DatagramPacket(byte buf, int length, I
8、netAddress addr, int port) DatagramPacket的常用方法有: getAddress()、setAddress(InetAddress) 得到、设置数据报地址。 getDate()、setDate(byte buf) 得到、设置数据报内容。 getLength()、setLength(ing length) 得到、设置数据报长度。 getPort()、setPort(int port) 得到、设置端口号。,12.3 面向非连接的数据报,3 DatagramSocket类 DatagramSocket类在客户端创建数据报套接字与服务器端进行通信连接,并发送和接受
9、数据报套接字 DatagramSocket构造方法: DatagramSocket() 创建数据报套接字,绑定到本地主机任意存在的端口。 DatagramSocket(int port) 创建数据报套接字,绑定到本地主机指定端口。 DatagramSocket(int port, InetAddress laddr) 创建数据报套接字,绑定到指定本地地址。,12.3 面向非连接的数据报,常用方法: connect(InetAddress address, int port) 连接指定地址。 disconnect() 断开套接字连接。 close() 关闭数据报套接字。 getInetAddre
10、ss() 得到套接字所连接的地址。 getLocalAddress() 得到套接字绑定的主机地址。 getLocalPort() 得到套接字绑定的主机端口号。 getPort() 得到套接字的端口号。 reseive(DatagramPacket p) 接收数据报。 send(DatagramPacket p) 发送数据报。 见例12。4 例12。5,12.3 面向非连接的数据报,4 多点传送和MulticastSocket类 如果服务器程序要将同一信息发送给多个客户端,那么服务器程序和客户程序可以利用多点传送(multicasting)方式进行通信 网络API通过MulticastSocket类和Mul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冲压件质检员岗位面试问题及答案
- 消费金融风控建模师岗位面试问题及答案
- 四川省成都石室天府2025年高一下化学期末学业质量监测模拟试题含解析
- 2025届安徽省舒城龙河中学化学高二下期末联考模拟试题含解析
- 吉林省长春市“BEST合作体”2025届化学高二下期末综合测试试题含解析
- 2025届广州协和中学高二化学第二学期期末检测模拟试题含解析
- 机械非标造价管理办法
- 区内恶意挖人管理办法
- 区县拨付资金管理办法
- 安全行为量化分析-洞察及研究
- 2024年漳州市常山开发区招聘笔试真题
- 2024年09月年中国农业发展银行江苏省分行秋季校园招聘(86人)笔试历年参考题库附带答案详解
- 2025年江苏省扬州市中考作文4篇范文:“尊重”“诚实”“创造性”“美好生活”
- 2025年辅警招聘考试试题库含完整答案
- 2025年吉林省中考语文试卷及答案
- 2024-2025学年度天津铁道职业技术学院单招《语文》真题附答案详解(突破训练)
- 快递行业市场发展分析及投资前景研究报告2025-2028版
- 2025年国情与形势政策教育纲要
- 《基本乐理》师范与学前教育专业基本乐理相关知识全套教学课件
- 2025年安徽省中考物理试题(原卷版)
- 2025-2026年中国台球产业消费趋势报告
评论
0/150
提交评论