java+socket实现双机通信

上传人:第*** 文档编号:61611905 上传时间:2018-12-06 格式:PDF 页数:16 大小:450.06KB
返回 下载 相关 举报
java+socket实现双机通信_第1页
第1页 / 共16页
java+socket实现双机通信_第2页
第2页 / 共16页
java+socket实现双机通信_第3页
第3页 / 共16页
java+socket实现双机通信_第4页
第4页 / 共16页
java+socket实现双机通信_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《java+socket实现双机通信》由会员分享,可在线阅读,更多相关《java+socket实现双机通信(16页珍藏版)》请在金锄头文库上搜索。

1、河南理工大学 计算机科学与技术学院 课程设计报告 2011 2012 学年第 二学期 课程名称计算机网络 设计题目 利用 Java socket 实现双机通信 学生姓名 学号 专业班级 指导教师 2012年6月20日 计算机网络课程设计 - 2 - 目目 录录 计算机网络课程设计 - 3 - 利用利用 Java Sock 实现双机通信实现双机通信 一、设计任务一、设计任务 1.利用 WinSock 来实现双机通信,理解 TCP 状态机图。 2.要求使用 WinSock 编程,采用其中的 TCP 面向连接方式,实现文本数据的交 换。 二、二、WinWinSocketSocket 简介及特点原理简

2、介及特点原理 2.1、什么是 socket Socket(套接字)是一种基于 TCP/IP 的编程接口。它采用客户/服务器通信机制,使客户端 和服务器端通过 Socket 接口在网络上实现连接和数据交换。它提供了一系列系统调用,使 用户可以方便地实现 TCP 和 UDP 等多种网络协议的通信。它使用户可以在网络协议上工作 而不必对该网络协议有非常深入的了解。这样编写的程序可被迅速移植到任何支持 Socket 的网络系统中去。 本文通过主要利用 Java Socket 来实现双机通信,实现一个简单的服务器,客户端聊 天通信工具。并对 Java Socket 的实现进行简单的分析和讲解,通过本文以

3、达到对 Socket 的原理又一个较清晰的认识。 Socket 接口是 TCP/IP 网络的 API,Socket 接口定义了许多函数或例程,程 序员可以用它们来开发 TCP/IP 网络上的应用程序。要学 Internet 上的 TCP/IP 网络编程,必须理解 Socket 接口。 Socket 接口设计者最先是将接口放在 Unix 操作系统里面的。如果了解 Unix 系统的输入和输出的话,就很容易了解 Socket 了。网络的 Socket 数据传输是一种特殊的 I/O,Socket 也是一种文件描述符。 Socket 也具有一个类似于打开文件的函数调用 Socket(),该函数返回一个整

4、型 的 Socket 描述符,随后的连接建立、数据传输等操作都是通过该 Socket 实现 的。 常用的 Socket 类型有两种: 流式 Socket (SOCK_STREAM) 和数据报式 Socket (SOCK_DGRAM)。流式是一种面向连接的 Socket,针对于面向连接的 TCP 服务 应用; 数据报式 Socket 是一种无连接的 Socket, 对应于无连接的 UDP 服务应用。 最重要的是,socket 是面向客户/服务器模型而设计的,针对客户和服务 器程序提供不同的 socket 系统调用。客户随机申请一个 socket (相当于一个 计算机网络课程设计 - 4 - 想打

5、电话的人可以在任何一台入网电话上拨号呼叫), 系统为之分配一个 socket 号;服务器拥有全局公认的 socket ,任何客户都可以向它发出连接请求和信 息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。 socket 利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。 服务器 socket 半相关为全局所公认非常重要。不妨考虑一下,两个完全随机的 用户进程之间如何建立通信?假如通信双方没有任何一方的 socket 固定, 就好 比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。 2.22.2、WinWinSocketSocket 的的通信原理通信原理 WinS

6、ock 是一个基于 Socket 模型的 API。WinSock 在 Windows98,Window NT 中使用。WinSock 一般由两部分组成:开发组件和运行组件。开发组件是供 程序员在 windows 环境下开发网络应用程序使用的,它包括应用程序接口库函 数、头文件和实现的文档,其中最主要的是 WINSOCK.H 运行组件是以动态链接 库(DlL)来实现 socket 接口的。文件名为 WINSOCK.DLL 应用程序在执行时装入 它就能实现网络通信功能 三三 、JAVAJAVA SocketsSockets 编程概述:编程概述: 用 Java 语言编程实现 Socket 通信, 其

7、原理与使用其他语言基本相同, 不同之处是:(1) java是跨平台的编程语言, 所以用java编写的Socket通信程序可以工作在所有支持TCP/IP 协议和 java 的软硬件平台上; (2)因为 Java 是面向对象的语言,所以在编程中需要使用 一些与 Socket 有关的系统类, 其中用于实现流 Socket 的类主要有: InetAddress 类,Socket 类,ServerSocket 类。 InetAddress 类的对象用来保存 IP 地址, Socket 类的对象用来创建 Socket 通信的客户端, Socket 通信的服务器端则有 ServerSocket 类的对象来实

8、现, 用上述几个类就可以很方便的生 成用户自己的 TCP/IP 通信程序。这几个类都属于 J 包,大部分用来处理网络操作的 系统类都包含在这个包中,所以用 JAVA 编写程序是,一般要在程序开始部分用 import 语 句加载这个包, 以便引入这些类。 用JAVA语言编写Socket程序的过程就是创建和定义Socket 类和 ServerSocket 类的子类的过程。 3.13.1 JavaJava 中输入中输入/ /输出流概念输出流概念 过滤流 DataInputStream 和 DataOutputStream 除了分别作为 FilterInputStream和 计算机网络课程设计 - 5

9、 - FilterOutputStream 的子类外,还分别实现了接口DataInput 和 DataOutput。接口 DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指 定长度的字节数,如 readBoolean() readInt()、readLine()、readFully()等。接口 DataOutput 中 定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如 writeChar()、 writeDouble() DataInputStream 可以从所连接的输入流中读取与机器无关的基本 类型数据,用以实现一种独立于具体平台

10、的输入方式;DataInputStream 可以向所连接的输 出流写入基本类型的数据。 3.23.2 JavaJava 语言语言 Java 语言的优点主要表现在:简单、面向对象、多线程、分布性、体系结构中立、安全性 等方面。 (1) 简单性 Java 与 C+语言非常相近,但 Java 比 C+简单,它抛弃了 C+中的一些不是绝对必要 的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java 实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加简便,同时减少 了出错的可能。 (2) 面向对象 Java 提供了简单的类机制和动态的构架模型。对象中封装了它

11、的状态变量和方法,很 好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子 类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一 种动态的解决方案。 Java 是一种完全面向对象的程序设计语言,它除了数组、布尔和字符三个基本数据类 型外的其它类都是对象,它不再支持全局变量。在 Java 中,如果不创建新类就无法创建程 序,Java 程序在运行时必须先创建一个类的实例,然后才能提交运行。 Java 同样支持继承特性,Java 的类可以从其它类中继承行为,但 Java 只支持类的单重 继承,即每个类只能从一个类中继承。 Java 支持界面,界面允

12、许程序员定义方法但又不立即实现,一个类可以实现多个界面,利 用界面可以得到多重继承的许多优点而又没有多重继承的问题。 (3) 多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不 同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容 易实现网络上的实时交互操作。 Java 程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线程与用 计算机网络课程设计 - 6 - 户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较 高的执行效率。 (4) 分布性 Java 是面向网络的语言。通过它提供的类库可以处

13、理 TCP/IP 协议,用户可以通过 URL 地址在网络上很方便的访问其他对象。 (5) 体系结构中立 Java 是一种网络语言,为使 Java 程序能在网络的任何地方运行,Java 解释器生成与体 系结构无关的字节码结构的文件格式。Java 为了做到结构中立,除生成机器无关的字节码 外,还制定了完全统一的语言文本,如 Java 的基本数据类型不会随目标机的变化而变化, 一个整型总是 32 位,一个长整型总是 64 位。 为了使 Java 的应用程序能不依赖于具体的系统,Java 语言环境还提供了用于访问 底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在 各种支持 Java

14、 的平台上。 java.lang: 一般的语言包。其中包括用于字符串处理、多线程、异常处理和数 字函数等的类,该包是实现 Java 程序运行平台的基本包 java.util: 实用工具包。其中包括哈希表、堆栈、时间和日期等 java.io: 基于流模型的输入/输出包。该包用统一的流模型实现了各种格式的 输入/输出,包括文件系统、网络和设备的输入/输出等 :网络包。该包支持 TCP/IP 协议,其中提供了 socket、URL 和 WWW 的 编程接口 java.awt: 抽象窗口工具集。其中实现了可以跨平台的图形用户界面组件,包 括窗口、菜单、滚动条和对话框等 java.applet: 支持

15、applet 程序设计的基本包 (6) 安全性 用于网络、分布环境下的 Java 必须要防止病毒的入侵,Java 不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使 用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 3.33.3 与与 SocketSocket 有关的有关的 javajava 类类: : 1.InetAddress 类: 计算机网络课程设计 - 7 - 用来保存因特网上的 IP 地址的类,它含有很多成员变量和方法,其中比较 常用的有 getLocalHost,getByName 和 getAllByName,利用它们都可以创建

16、该类 的对象,获得一个 Java 程序操纵、处理的 IP 地址。例如下面的程序段可以根 据主机名获取其 IP 地址: try InetAddress remoteOP=InetAddress.getByName(“”); catch(UnknownHostException excpt) System.err.println(“Unknown host:”+excpt); 2.Socket 类: 用来实现 TCP/IP 通信的端口套接字类,所有希望通过 socket 来完成与远 程主机进行 TCP/IP 连接和通信的程序,都必须创建一个 socket 类的对象。这 个类对象的作用首先是根据远程主机的 IP 地址和端口号在本地主机创建一个与 远程主机的联接;其次,在连接建立后,本地主机程序就可以使用这个类对象 提供的输入/输出通道与远程主机实现通信。 当一个 socket 被创建时,它所指定的连接也将同时被建立并打开,若连接 成功, 调用这个 socket 对象的有关方法就可以实现与远程主机的读写通信操作

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

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

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