版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要 本文阐述了使用 JAVA 编程语言对基于客户 /服务器模式地编写通信程序 ,讨论了SOCKET 机制、输入输出流以及程序实码 .关键词 JAVA, 网络 ,SOCKET,APPLET 网络上地系统结构多为客户 /服务器模式 ,服务器端负责数据和图像等地存储、维护、管理以及传 递 , 客 户 端 则 负 责 人 机 界 面 地 操 作 、 送 出 需 求 及 显 示 收 回 地 数 据 . 下 面 介 绍 一 下 如 何 使 用 JAVA 来 进 行 网 络 编 程:1 由于客户端通过 IE 同服务器建立联系 ,所以客户端使用 Applet,服务器端使用Application;2 服 务
2、器 应 设 置 成 多 线 程 , 应 答 多 个 客 户 地 请 求 ;3 两 端 通 信 使 用 SOCKET 机 制 . 1 Java 中 输 入 / 输 出 流 概 念:过 滤 流 DataInputStream 和 DataOutputStream 除 了 分 别 作 为 FilterInputStream 和FilterOutputStream 地子类外 ,还分别实现了接口DataInput 和 DataOutput.接口 DataInput 中定义地主要包括从流中读取基本类型地数据、读取一行数据、或者读取指定长度地 字节数 ,如 readBoolean( readInt(、rea
3、dLine(、readFully( 等.接口 DataOutput 中定义 地 方 法 主 要 是 向 流 中 写 入 基 本 类 型 地 数 据 或 者 写 入 一 定 长 度 地 字 节 数 组 , 如 writeChar( 、writeDouble( DataInputStream 可以从所连接地输入流中读取与机器无关地基本类型数据,用以实现一种独立于具体平台地输入方式;类DataInputStream 可以向所连接地输出流写入基本型地数据. 2 Socket 机制 Socket 是面向客户 /服务器模型设计地,网络上地两个程序通过一个双向地通讯连接实现数据地交换 ,这个双向链路地一端称
4、为一个 Socket. Socket 通常用来实现客户方和服务方地连接 .客户程序可以向 Socket 写请求 ,服务器将处理此请求 ,然后通过 Socket 将结果返 回 给 用 户 . Socket 通信机制提供了两种通讯方式:有联接和无联接方式 ,分别面向不同地应用需求 .使用有联接方式时 ,通信链路提供了可靠地 ,全双工地字节流服务 .在该方式下 ,通信双方必须创建一个联接过程并建立一条通讯链路,以后地网络通信操作完全在这一对进程之间进行 ,通信完毕关闭此联接过程.使用无联接方式时其系统开销比无联接方式小,但通信链路提供了不可靠地数据报服务,不能保证信源所传输地数据一定能够到达信宿.在
5、该方式下 ,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同地主机和进程之间转发语进行. 3 Java言Java 语言地优点主要表现在:简单、面向对象、多线程、分布性、体系结构中立、安全性简等方单面. (1 性Java 与 C+ 语言非常相近 ,但 Java比 C+简单 ,它抛弃了C+中地一些不是绝对必要地功能 ,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型 . Java实现了自动地垃圾收集 ,简化了内存管理地工作 .这使程序设计更加简便 ,同时减少了出 错 地 可 能 . (2 面 向 对 象Java 提供了简单地类机制和动态地构架模型 .对象中封
6、装了它地状态变量和方法 ,很好地实现了模块化和信息隐藏;而类则提供了一类对象地原型 ,通过继承和重载机制 ,子类可以使用或重新定义父类或超类所提供地方法 ,从而既实现了代码地复用 ,又提供了一种动态 地 解 决 方 案 . Java 是一种完全面向对象地程序设计语言,它除了数组、布尔和字符三个基本数据类型外地其它类都是对象,它不再支持全局变量.在 Java 中,如果不创建新类就无法创建程序 ,Java 程 序 在 运 行 时 必 须 先 创 建 一 个 类 地 实 例 , 然 后 才 能 提 交 运 行 . Java同样支持继承特性 ,Java地类可以从其它类中继承行为 ,但 Java只支持类
7、地单重继承 ,即 每 个 类 只 能 从 一 个 类 中 继 承 . Java支持界面 ,界面允许程序员定义方法但又不立即实现 ,一个类可以实现多个界面 ,利用界 面 可 以 得 到 多 重 继 承 地 许 多 优 点 而 又 没 有 多 重 继 承 地 . (3 多 线 程多线程使应用程序可以同时进行不同地操作 ,处理不同地事件 .在多线程机制中 ,不同地线程处理不同地任务 ,他们之间互不干涉 ,不会由于一处等待其他部分 ,这样容易实现网络上地 实 时 交 互 操 作 . Java 程序可以有多个执行线程 ,如可以让一个线程进行复杂地 ,而让另一个线程与用户进行交互 ,这样用户可以在不中断计
8、算线程地前提下与系统进行交互 .多线程保证了较高地执 行 效 率 . (4 分 布 性 Java是面向网络地语言 .通过它提供地类库可以处理 TCP/IP 协议 ,用户可以通过 URL 地址 在 网 络 上 很 方 便 地 访 问 其 他 对 象 . (5 体 系 结 构 中 立Java是一种网络语言 ,为使 Java程序能在网络地任何地方运行,Java解释器生成与体系结构无关地字节码结构地文件格式 .Java为了做到结构中立 ,除生成机器无关地字节码外 ,还制定了完全统一地语言文本 ,如 Java地基本数据类型不会随目标机地变化而变化 ,一个整型 总 是 32 位 , 一 个 长 整 型 总
9、 是 64 位 . 为了使 Java 地应用程序能不依赖于具体地系统,Java 语言环境还提供了用于访问底层操作系统功能地类组成地包,当程序使用这些包时,可以确保它能运行在各种支持Java地平台上. java.lang: 一般地语言包 .其中包括用于字符串处理、多线程、异常处理和数字函数等地类 , 该 包 是 实 现 Java 程 序 运 行 平 台 地 基 本 包java.util: 实 用 工 具 包 . 其 中 包 括 哈 希 表 、 堆 栈 、 时 间 和 日 期 等java.io: 基于流模型地输入 /输出包 .该包用统一地流模型实现了各种格式地输入 /输出 ,包括 文 件 系 统、
10、网 络 和 设 备 地 输 入 / 输 出 等: 网络包 .该包支持 TCP/IP 协议 ,其中提供了 socket、URL 和 WWW 地编程接口java.awt: 抽象窗口工具集 .其中实现了可以跨平台地图形用户界面组件 ,包括窗口、菜单、滚 动 条 和 对 话 框 等 java.applet: 支 持 applet 程 序 设 计 地 基 本 包(6 安 全 性用于网络、分布环境下地 Java必须要防止病毒地入侵 ,Java不支持指针 ,一切对内存地访问都必须通过对象地实例变量来实现,这样就防止了程序员使用欺骗手段访问对象地私有成员, 同时也避免了指针操作中容易产生地错误. 4 JAVA
11、工具(1 JDK 1 Java编译器Java 编译器将Java 源代码文件编译成可执行地Java 字节码 .Java 源代码文件地扩展名为 .java,Java 编译器把这种扩展名地文件编译成扩展名为.class 地文件 .源文件中地每个类在编译后都将产生一个class 文件 ,这意味一个Java 源代码文件可能编译生成多个. class文件2 Java解释器Java 解释器对编译生成地字节码格式地可执行程序地运行提供支持 ,它是运行非图形Java 程 序 地 命 令 行 工 具 . 3 Appletviewer 它是 Java Applet 地简单测试工具 ,可使用它来测试 Java App
12、let 程序 ,而不需要 WWW 浏览 器 地 支 持 . (2 Visual J+ Visual J+ 集成了可视化界面设计、交互式调试、代码编辑、联机帮助信息和介绍如何快速掌握该开发环境地实用向导等多项功能 ,同时具有能充分利用 Active X 和 COM 新技术地优势 .利用 Visual J+可创建交互性很强地 Internet 应用程序 ,是难得地 Java 开发系 统 . 5 客 户 机 / 服 务 器 通 信 地 实 现: (1 Application 同 Applet 地 通 信两 端 通 过 Socket 机 制 进 行 连 接:1 客 户 端 地 编 程 流 程 : 打
13、开 Socket, 新 建 一 个 套 接 字;为 套 接 字 建 立 一 个 输 入 和 输 出 流;根 据 服 务 器 协 议 从 套 接 字 读 入 或 向 套 接 字 写 入 ;2指清除套接字和输入/输出流;服务器端地编程流程: 在打开 Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字定端口为客户端请求地Socket 服务;使用 ServerSocket类地 accept(方法使服务器型套接字处于监听状态并把监听结果返回该给通普接通创套输入接输字流;为普套字建和出;从输入和输出流中读入或写入字节流,进行相应地处理 ,并将结果返回给客户端;在客户端和服务
14、器工作结束后关闭所有地对象 ,如服务器型地套接字 ,普通套接字 ,输 入 和 输 出 流 . 正是由于 Java 系统具有基于 Socket 地灵活通信机制 ,因而其应用程序能自由地打开和访 问 网 络 上 地 对 象 , 就 象 在 本 地 文 件 系 统 中 一 样 . (2 Applet 之 间 地 通 信:Applet 之 间 地 通 信 使 用 Applet Context 类 地 getApplet( 方 法 . 只 要 在 程 序 中 加 入Applet oneapplet=getAppletContext(.getApplet(。 便可 使用 name 为 first 地App
15、let 中 地 方 法 了 . 在该课题中大量使用了该种通信方法 ,因为专门同服务器端通信地 Applet 中包含接收信息方法和发送信息方法 ,所有客户端地 Applet 都要使用负责通信地 Applet 中地方法 ,所以 客 户 端 地 Applet 同 负 责 通 信 地 Applet 必 须 进 行 通 信 . 6 程 序/ 服 务 器 端 程 序 S.java 负 责 与 客 户 端 通 信import java.io.*。import .*。import java.lang.*。import T2。 class ThreadEchoHandler extends Thread /创建
16、线程 T2 theT2=new counterT2(void 。 Socket incoming。 int i,int 。 ThreadEchoHandler(Socket c incoming=i。 counter=c。 public run( try DataInputStream in=new DataInputStream(incoming.getInputStream(。 DataOutputStream out=new DataOutputStream(incoming.getOutputStream( 。 System.out.println (hello。 boolean do
17、ne=false 。while(!done String aa=。 String str=in.readUTF(。/ 从 客 户 端 得 到 字 符 串 / 在 此 加 入 各 自 地 服 务 程 序 System.out.println (str。 theT2.pass(str。/ 解 码 theT2.tongji(。/ 修 改 监 控 库 中 地 信 息aa=theT2.guan(。/ 操 纵 数 据 库 System.out.println (string z is:+aa。if(pareTo(null!=0 / 若 是 查 询 数 据 库 , 返 回 查 询 后 地 结 果 / 若不是
18、 查询数据库 , 不向客户 端输出信息 out.writeUTF(aa。 out.flush(。 /while incoming.close( 。/ 线 程 关 闭 /try catch(IOException e System.out.println(e。 /end run /- class S public static void main(String args int i=1。 try ServerSocket s=new ServerSocket(1111。 for(。 Socket incoming=s.accept(。 System.out.println(connect: +i
19、。 new ThreadEchoHandler(incoming,i.start(。 i+。 catch(Exception System.out.println(e。e /客户端通信小程序Echo.java import java.io.*。import java.applet.*。.*。import java.awt.*。import public class Echo extends Applet TextArea Line。taosvoid 。 Socket echoSocket。 DataOutputStream 。 DataInputStream is。 String public
20、 init( setBackground(Color.whiteTextArea(5,80。 ta=new 。 ta.setEditable(false。 add(ta。 try echoSocket=new Socket(1,1111 。 / 与 服 务 器 建 立 连 接 catch(IOException st(String stri 。/发送字符串e System.out.println(error public void 地 try DataOutputStream os=new DataOutputStream(echoSocket.getOutputStream(。 DataIn
21、putStream is=new DataInputStream(echoSocket.getInputStream(。 os.writeUTF(+ stri 。/ 向 服 务 器 输 送 string os.flush(。 catch(IOException error:+e。e System.out.println( public String st1( /接收字符串地方法 String Line=。 try DataOutputStream os=new DataOutputStream(echoSocket.getOutputStream(。 DataInputStream is=new DataInputStream(echoSocket.getInputStream(。 Line=is.readUTF(。/从服务器读 来地 信息 ta.appendText(+Line。/ 在 文 本 域 中 输 出 信 息 catch(IOException error:+eLine。e System.out.println( return 。 7 程 序 调 试 心 得:1 在建立 Socket连接时 ,两端地端口号必须设为一致 ,否则建立不了连接 .服务器端必须 有 主 机 IP 地 址 或 主 机 名 参 数 . 2 连接建立好之后应确定输入和输出流 .起初程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 高中信息技术数据与计算之数据在电商营销效果预测模型构建中的应用课件
- 2025 高中信息技术数据与计算之数据可视化的克利夫兰点图设计课件
- 2026年智慧海洋智慧渔业智慧渔港解决方案应用
- 2024年广州互联网法院首例跨境传输个人信息司法裁判要旨
- 2026年数据治理中的数据安全防护:终端 网络 数据库三层保护设计
- 2026年数据投毒攻击防御:训练数据后门检测与防范机制
- 2026年生物育种品种全程机械化栽培技术规程
- 医患沟通中的非语言表达课件
- 2026年载人潜水器水下布放回收中的通信保障方案
- 2026年省域美丽中国先行区建设一省一色方案模板
- 地震勘探资料解释技术
- 牧原饲料厂安全培训课件
- 2025年校园节能改造项目可行性研究报告及总结分析
- 肾病患者的饮食指导课件
- 运动品牌361°小刘鸭联名新品发布快闪店活动方案
- 2025秋南方新课堂金牌学案中国历史七年级上册(配人教版)(教师用书)
- 劳动关系协调员四级考试真题(2篇)
- 2025年ODCC开放数据中心大会:云边协同AI网络技术白皮书
- 2025年中国纳米功能电池项目创业计划书
- 雅马哈DTX430K电子鼓中文说明书
- 小学五年级音乐期末考核方案
评论
0/150
提交评论