




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 论 文 题 目:跨平台JAVA聊天系统的设计与实现学生姓名宋 晓 蕊 指导教师 公 力二级学院 气象学院 专 业 电子信息工程班级 电子一班 学号 560137317 提交日期 2009年5月 31日 答辩日期 2009年6月1日2009年5月 28日II 宋晓蕊金 陵 科 技 学 院 学 位 论 文 使 用 授 权 声 明金陵科技学院有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。论文的公布(包括刊登)授权金陵科技学院教务处办理。学生签名: 指导教师签名: 日 期: 跨平台JAVA聊天系统的设计与实现摘 要即时通讯工具作为当今网络应用的主流,越来越受到了人们的青睐,使人们的网上生活更加丰富多彩。然而目前广泛使用的网络即时通讯工具大多都是基于单平台的。本文针对这一特点,利用Java语言开发了一个跨平台、多线程的网络即时聊天系统,包括服务器端和客户端以及基于JSP和Tomcat等工具制作的服务网站。通过运行、测试与分析,该系统在Linux系统及Windows系统下皆可以稳定、可靠地运行,实现了跨平台特性,具有一定的实用价值。关键词:J2SE 即时通讯 跨平台 多线程 JSP LinuxDesign and Implementation of a Cross-platform Chat System Based on JavaAbstract Nowadays, the Internet technology has already entered a rapid development times, the instant messenger takes now the mainstream of network application, which causes peoples online life to be more richly colorful, and has also received peoples favors simultaneously. However, most instantaneous communication tools used abroad in the network presently are running only at a single platform. Aim at this point, a multi-platform and multithreading Chat System Based on Java was implemented in this paper. The system contains a server program, a client program and a website designed with JSP and Tomcat. Numerous tried experiments show that this system can run well under both Windows and Linux platform, which indicates an achievement of the Cross-platform characteristic and an Application value.Key Words: J2SE, Real-time chat, Cross-platform, Multithreading, JSP, Linux目 录摘要. .Abstract. .第一章 绪论. .11.1引言.1 1.1.1实时聊天系统研发背景.1 1.1.2国内外的技术发展现状.11.2论文研究的意义和使用价值.21.3论文的研究思想.2第二章 开发技术原理及开发环境简介.32.1涉及的JAVA技术原理.32.2开发环境与工具平台选择.4 2.2.1JAVA SE 6.0.4 2.2.2ECLIPSE 3.4.5 2.2.3RATIONAL ROSE建模工具.5 2.2.4ORACLE数据库系统.5 2.2.5HTML和XML.5 2.2.6JAVASCRIP脚本语言.6 2.2.7JSP技术.6 2.2.8TOMCAT服务器.6 2.2.9操作系统平台.6第三章 聊天系统体系结构的设计.73.1聊天系统总体构架.73.2客户端功能设计.83.3服务器端功能设计.83.4客户端之间的交互功能.93.5用户注册登录活动图.103.6用户聊天活动图.103.7后方数据库设计.103.8时序图设计.11 3.8.1好友添加时序图.11 3.8.2用户文本聊天时序图.123.9网络通讯编码示例.12 3.9.1聊天客户端的几个重要变量.12 3.9.2聊天客户端的注册代码.13 3.9.3聊天客户端的登录代码.13 3.9.4聊天客户端的好友添加代码.13 3.9.5SOCKET通信及相关代码.14第四章 服务网站的设计与实现.174.1网站建设准备知识.174.2聊天系统服务网站构架.174.3WEB服务器的架设.184.4WEB服务器的代码示例.19 4.4.1JSP网页注册代码片段.19 4.4.2TOMCAT的配置(SERVER.XML).20 4.4.3APACHE的配置(HTTPD.CONF).21 4.4.4JSP压缩文件的下载链接配置.22第五章 结束语系统测试结果及遗留问题.235.1系统测试结果.235.2尚待解决的问题.23致谢.24参考文献.25附录 系统制作网站服务器的部署与运行.26IV 金陵科技学院学士学位论文 第一章 绪 论第一章 绪 论1.1引言1.1.1 实时聊天系统研发背景世界上第一台电子计算机ENIAC1问世后,局域网也随即出现2,之后Internet应运而生3。随着网络应用越来越丰富,以快速、交互、简便为代表的即时通讯(instant message,以下简称IM)工具,已经成为当前网络用户最喜爱的网络沟通工具。即时通讯工具不管在基础应用方面,还是产品扩展应用方面都具有质的飞跃,它为满足人们的需要,将其功能不断的完善。用户通过聊天软件在互联网上尽情的交谈,不但可以进行文字聊天和文件传输,还可以通过语音、视频来聊天。今后随着网络技术的发展,聊天软件以前所未有的速度改变着人们的生活方式,它必定会成为人们网络生活不可缺少的一部分。1.1.2 国内外的技术发展现状即时通讯软件是网络诞生以来最重要的应用之一。1996年4月以色列的4个年轻人发明了最早的IM软件ICQ4-5 ICQ名字取自英文“I seek you”的谐音,即是“我找你”的意思。最初的ICQ只有两个特性,即用户列表和即时聊天。但一经推出就受到众多网民的喜爱。当ICQ风行全球的时候,各种仿ICQ的中文IM软件也纷纷推出,目前已经有众多产品,注册用户超过10亿。至2007年第2季度, IM软件帐号已达3.76亿6。随着IM应用的深入,其功能早已超越了初期的即时文字聊天。表情图标早已成为各个IM软件的标准功能,文件传输、语音/视频聊天、游戏等高级功能也正越来越多地被集成进入IM应用。事实表明,现在的IM已不再是一个简单的沟通工具,而是一个信息资讯、交流互动、休闲娱乐中心,IM平台上的语音、视频、音乐点播、信息共享等新应用层出不穷。相信未来IM软件的道路会更加宽广和精彩。而腾迅QQ也在中国迅速崛起并垄断即时通讯市场。然而QQ在外国的知名度很低,并且官方只有英文版,所以很少有人用。外国聊天软件主要有ICQ、MSN、camfrog、PalTalk、skype、TOM-SKYPE, Miranda IM、 Gaim、Google Talk、Google Talk、PowerTools Pro For AOL、phpFreeChat、Chat Watch等等7。即时通讯其原理:TCP/IP和UDP(用户数据报协议)都是建立在更低层的IP协议上的两种通讯传输协议8-12。前者以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。后者以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。QQ就是使用UDP协议进行发送和接收“消息”的。当机器安装了OICQ以后,实际上既是服务端(Server),又是客户端(Client)。当登录OICQ时,OICQ作为Client连接到腾讯公司的主服务器上,“看谁在线”时, OICQ又一次作为Client从QQ Server上读取在线网友名单。当与OICQ伙伴进行聊天时,如果连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传送。如果双方连接不是很稳定,QQ服务器将为其聊天内容进行“中转”。文件传输及语言视频功能也是基于UDP完成的。各种聊天软件使用的开发工具各不相同,所运行的平台也不相同,所以大多数软件只能运行于特定系统平台,也有跨平台的客户端,比如运行于Linux/Unix下的LinuxQQ,Lunaqq和evaq,虽然也能实现QQ的某些功能,但是由于开发工具及运行平台不同导致Windows下的大部分功能在Linux下无法实现。如何让任何系统平台下的用户都能够毫无差别的使用软件,这是一个亟待解决的难题。1.2 论文研究的意义和使用价值互联网发展的迅速使网上通讯成为一种必不可少的习惯。论文研制的系统其设计是为了实现跨平台的网络即时通讯,利用当今最为流行的Java语言来实现的即时通讯工具的雏形,可以立刻应用于局域网或互联网,尤其当今开源系统Linux逐渐普及,此系统非常适合作为企业局域网内部Linux平台聊天工具。同时由于其中涉及的很多方面都是Java常用的技术或者难点,比如用Java的AWT、swing界面编程、Java的网络编程技术、Java与Oracle数据库连接、JSP网站开发技术等等。所以,如果将该系统的源码共享,将有利于Java爱好者的互相学习与交流,并对其功能进行扩充。1.3论文的研究思路目前,Windows平台方面的即时通讯已经很多,但是其他系统比如Linux平台13,虽然有类似QQ方面的一些产品但数量毕竟不多且功能界面等都还不是很理想,鉴此本文主旨是开发一个跨平台14的聊天系统,并制作一个多功能辅助网站。 开发环境采用sun公司的Java语言,并充分利用其跨平台、多线程、网络流、例外处理、JDBC,AWT、SWING等技术,采用Java SE(Java Standard Edition)作为开发工具,先开发一个跨平台的服务器端程序,再开发一个跨平台的客户端程序以及一个用JSP和Tomcat制作的可以跨平台运行的网站系统。从客户端可以即时和好友进行交流以及好友管理等功能,也可以登陆网站注册。28 宋晓蕊金陵科技学院学士学位论文 第二章 开发技术原理及开发环境简介第二章 开发技术原理及开发环境简介2.1 涉及的JAVA技术原理(一)多线程机制它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立,线程又称为轻量级进程,多线程技术允许你在一个应用程序中启动多个执行轻量程序,使多段程序同时竞争CPU资源,从而提高系统效率。而对于网络通讯工具来说,多线程的特性是必须的,不仅是为了效率,而且可以实现同时处理多个请求。(二)网络流Java中的网络通讯以及文件的读取都是以一种流的概念来理解的,这样,网络上数据的传输其实就等同于看成一台机器上文件的读取,有利于理解与编写运用程序,java类库中提供了丰富的IO流类资源以及网络编程类资源,软件开发人员可以方便的编写网络应用程序。(三)例外处理Java通过面向对象的方法来处理例外。在一个方法的运行过程中,如果发生了例外,则这个方法生成代表该例外的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一例外。我们把生成例外对象并把它提交给运行时系统的过程称为抛弃(throw)一个例外。运行时系统在方法的调用栈中查找,从生成例外的方法开始进行回朔,直到找到包含相应例外处理的方法为止,这一个过程称为捕获(catch)一个例外。(四)跨平台Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。(五)网络通讯与Socket编程套接字(socket)为两台计算机之间的通信提供了一种机制,在JamesGosling注意到Java语言之前,套接字就早已赫赫有名。该语言只是让您不必了解底层操作系统的细节就能有效地使用套接字。Java提供了一个丰富的、支持网络的类库,这些类使得应用程序能方便地访问网络资源。Java提供了两种通讯工具。它们是:使用用户报文协议(UDP)的报文和使用传输控制协议/因特网协议(TCP/IP)的Sockets(套接字)。(六)TCPTranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。 (七)UDPUser Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。(八)JDBC数据库技术 JDBC全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是Java核心类库的一部分。JDBC的最大特点是它独立于具体的关系数据库。与ODBC (Open Database Connectivity)类似, JDBC API 中定义了一些Java类分别用来表示与数据库的连接(connections), SQL语句(SQL statements), 结果集(result sets)以及其它的数据库对象, 使得Java程序能方便地与数据库交互并处理所得的结果。使用JDBC, 所有Java程序(包括Java applications , applets和servlet,JSP等)都能通过SQL语句或存储在数据库中的过程(stored procedures)来存取数据库。(九)AWT界面设计AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。(十)SWING界面设计 Java的基于AWT的扩展包,其中包括众多的控件以及丰富的控件操作功能,使用户可以简单的利用它画出应用程序的界面,结合Eclipse3.4带的SWT类包,可以设计出非常好看的用户界面。(十一)多媒体处理与网络传输技术Java提供了丰富的多媒体编程接口,Java语言的内置类库对多媒体技术的支持能力相当强,尤其是对文本、图形、图像、声音等媒体的处理与展示均提供了极其方便而又丰富的接口。2.2开发环境与工具平台选择2.2.1 Java SE 6.0Java是一种可以编写跨平台应用软件的面向对象的程序设计语言。它既是一种编程语言,又是一个平台。Java分为三个体系JavaSE,JavaEE,JavaME。SE主要用于桌面程序,控制台开发(JFC),EE用于企业级开发(JSP,EJB等等),ME则是嵌入式开发(手机,小家电等),一句话说 J2SE 是基础, J2EE 是扩展 , J2ME 是变形。本文使用的版本是Java SE 1.6.0_03。2.2.2 Eclipse 3.4 Sun公司发布的Java安装包并没有提供集成开发环境 (Integrated Development Environment,简称IDE),需要另外安装支持JAVA的IDE,主要有Eclipse、JBuilder、netbeans等等,出于免费和开源考虑,选用Eclipse。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse还集成了一个SWT包(相当于AWT和SWING的结合和扩展),让程序员更方便的制作出美观实用的软件。更舒服的是,利用Eclipse来搭建一个动态JSP程序,快速,简单、方便。Eclipse3.4版本的功能已足够满足,故无需安装Myeclipse插件,然而由于界面编程和打包需要还需安装Visual Editor和Fatjar插件。2.2.3 Rational Rose建模工具Rose是美国的Rational公司的面向对象建模工具。利用这个工具,可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C+、Java、VB和Oracle等语言和系统的代码。Rational Rose包括了统一建模语言(UML),OOSE,以及OMT。Rose提供了非常方便的系统建模功能,比如用例图、行为图、活动图、时序图等。利用它可以加快系统设计开发效率。甚至可以用Rose依据Java源代码反向映射出类和包以及方法之间的关系图。本文只是简单的用于关系图的构建。2.2.4 Oracle数据库系统数据库是存储在一起的相关数据的集合,数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。常用的数据库有DB2、Oracle、Informix、Sybase、mySQL等等。Oracle 和 MySQL 的驱动具有完整的 JDBC 特色和稳定性,两者都具有良好跨平台性。出于技术支持考虑,选用Oracle10g作为后方数据库。2.2.5 HTML和XMLHTML(HyperText Mark-up Language)即超文本标记语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言,借助层叠样式表单(CSS)工具,网页将在您丰富的想象力下千变万化。XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML比较易于掌握和使用。2.2.6 JavaScrip脚本语言Javascript是一种由Netscape的LiveScript发展而来的面向对象的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。基于跨平台及对Java的类似性,本论文选用Javascript进行网页辅助开发。2.2.7 JSP技术15-17 动态网页设计常用工具有ASP、JSP和PHP。ASP只运行于Windows平台18,而JSP是基于Java语言的。Java的Web编程中常用到JSP,Servlet和JavaBean等,框架方面有Struts,Hibernate(数据库方面)和Spring等(Struts用的比较多)。开发Web时用的一些其他东西还包括AJAX,JavaScript,CSS等技术。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。JSP与Java Servlet一样,比传统CGI具有更高的执行效率,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。2.2.8 Tomcat服务器 常用的WEB服务器软件有IIS、APACHE、Tomcat、Resin等。用JSP和Servlet制作的网页需要由Tomcat来解释执行。然而Tomcat只是一个jsp的容器,可以解析html但效率远没有apache高,可将二者进行整合,即Java的程序由tomcat进行处理,如果是静态页面则可以选择是由apache或tomcat处理以提高效率和降低负荷。另外Tomcat和APACHE的配置文件都是一个XML文件,管理非常方便。本文使用的版本是Tomcat6.0.18。2.2.9 操作系统平台(一)Windows XP虽然当前Windows vista和Windows 7 已经展现头角,但XP的使用人群依然庞大,出于方便考虑,选用Windows XP作为主要系统平台。(二)Linux操作系统Linux操作系统是UNIX操作系统的一种克隆系统。Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。Linux的开源和定制特性使得很多机构纷纷制作自己的发布版本以至于现在的Linux版本多的不计其数,比如Fedora,Suse,Ubuntu,Redflag等等,然而使用方法都大同小异,本文采用Fedora 7作为Linux测试平台。金陵科技学院学士学位论文 第三章 聊天系统体系结构的设计第三章 聊天系统体系结构的设计3.1 聊天系统总体构架该系统主要包括三层如图1所示,客户端登录或注册时与服务器取得联系后,服务器将相关请求数据交送数据库服务器,存取过程执行完毕后服务器将多线程的监听客户端的各种活动,若接收到活动请求则不断的完成各项数据交互工作。 图1 聊天系统三层构架用例图图2则表示了TCP、UDP以及JDBC之间的框架。 图2 TCP、UDP、JDBC框架 中间层具体又可分成多个部分,如图3所示。 图3 系统中间层构架用例图3.2 客户端功能设计 图4 客户端功能用例图3.3 服务器端功能设计 拟实现的服务器端功能如图5所示。当用户注册时。客户端会提示使用简洁模式注册还是网页模式注册,简洁模式注册时服务器端会调用服务器调用的类来完成实例,但如果采用的是网页模式则登录到网站的注册页面,此时注册信息在Oracle数据库系统中的存储过程则由JSP来完成,这部分内容将在下文予以介绍。而注册时聊天号码的分配遵循以下原则: 设已注册用户数为n,则刚注册的用户所得到的聊天号YB1NO为: (1)其中-9999为出错参数。(1)式表明本系统能容纳的用户数为900000。 图5 服务器端功能用例图(未列出文件传输和语音/视频聊天的类)3.4 客户端之间的交互功能拟实现的客户端之间的信息交互功能如图6所示。图6 客户端之间信息交互功能用例图3.5用户注册登陆活动图图7为客户端向服务器端提交注册请求时的活动图例。图7 客户端向服务器端提交注册请求时的活动图例3.6用户聊天活动图图8 客户端间文本聊天活动图例(未包含发送文件活动,其流程基本相同但不支持离线模式)3.7后方数据库设计 数据库连接类在系统结构中的位置如图10所示。 图10 数据库连接类在系统结构中的位置Oracle数据库系统中需要创建两个表,他们的字段和示例内容如图10和图11。 图10 数据库中储存客户注册信息的表(YB1NO) 图11 数据库中储存客户好友信息的表(FRIEND)图中只显示了部分含义直观的字段,许多数据辅助字段未列出。其中,YB1NO为聊天号码,NICK为昵称,STATU为在线与否的标志,IP为客户端登录IP及端口,PICNO为头像标志,INFO为注册用户的个人信息,SEX为性别,EMAIL为电子邮件地址,AGE为年龄,TEL为固定电话,MOBILE为手机号,ADDR为籍贯,HTTP为个人主页地址,CHECH1为好友验证选项(即当别人添加你为好友时是否需要你同意),LASTLOGON为最后一次登录的时间,FRIENDNO为好友的聊天号,若有多个好友则存储多条记录(即表FRIENDNO没有主键,允许重复),RES_MSG为离线发送消息时暂存在数据库中的聊天消息。一旦用户登录读取,其也随即被清空,相应的辅助标志(图中未列出)也将被改写。3.8时序图设计3.8.1好友添加时序图若客户端B的登录用户未设置好友验证,则服务器直接作添加处理。 图12 好友添加时序图3.8.2用户文本聊天时序图图中未涉及文件传输,文件传送不支持离线模式。图13 用户文本聊天时序图3.9网络通讯编码示例3.9.1聊天客户端的几个重要变量static String URLstring=27; /服务器IP地址static String ybport=8088; /tomcat服务器端口static String webbase=ybchat_jdbc_oracle;/网站站台名称static String regpage =/+webbase+/register/ybreg1.htm;/注册页static String mainpage=/+webbase+/main/main.htm;/主页static String bbspage =/+webbase+/bbs/bbs.htm;/BBS讨论板块static String advpage =/+webbase+/adv/adv.htm;/广告static int jjms=0;/注册时用网页模式还是简洁模式? static int TCPserverPort=7802;/TCP端口static int UDPrPort=7900;/使用的UDP端口3.9.2聊天客户端的注册代码void registy(String outs,DataInputStream instream,PrintStream outstream)sendString(outstream,outs);sendString(outstream,nick +myyb2ID.nick); /发送SQL语句元素sendString(outstream,check1 +myyb2ID.check);sendString(outstream,end registy); / 告诉服务器端是注册请求String inline=receivString(instream);if(inline.equals(OK)inline=receivString(instream);result.setResult(200,inline); / 设置参数200表明注册成功else result.setResult(401,inline);/设置401错误3.9.3聊天客户端的登录代码private void logon()lf=new LogonFrame();while(!logonOK)tryThread.sleep(100);catch(Exception e)mainFrame=new Thread(new MainFrame(yb1No);mainFrame.start();logonOK=false; /若登录出错则抛出异常并返回登录窗口3.9.4聊天客户端的好友添加代码void joined() Sender s=new Sender(JOINED yb1No:+myyb2ID.yb1No+ join:+joinedyb2No);s.start();Result r=s.getReturn();if(r.getCode()!=200)noteMsg(r.getMsg();elseyb2ID yb1id=new yb2ID();yb1id.yb1No=joinedyb2No;setFriend(yb1id.yb1No,yb1id);repaintEvt=true;/ setFriend 为一个哈希表3.9.5Socket通信及相关代码一个实现Socket通信的网络应用程序,由一个服务端程序和一个客户端程序组成。服务器端程序中包含一个提供TCP连接服务的ServerSocket类对象和一个参与通信的Socket对象,客户端程序中只包含一个参与通信的Socket对象。服务器端的ServerSocket类对象提供TCP连接服务,连接成功后,实际进行通信的是服务端的Socket对象和客户端的Socket对象。Socket通信中服务端程序如下:static int TCP=7802,UDP=7803; /使用的端口,可根据自己情况更改 static String oracledriver=oracle.jdbc.driver.OracleDriver;/连接oracle的驱动,在jar包ojdbc6.jar中/下面是连接oracle数据库的语句,localhost指本机,也可设为或主机名或IP地址,/1521是端口号, yuanbing是数据库名称,可视具体情况更改 - 晓蕊static String oracle_url=jdbc:oracle:thin:localhost:1521:yuanbing;static String ousername=system;/oracle数据库名称static String opassword=yuanbing;/oracle数据库密码public void run()boolean exitwhile=false;byte rMsg=new byte300*2;String rMsgs=null;System.out.println( start listen UDP.); / 开始监听DatagramSocket serverSocket=null;DatagramPacket dp=null;InetAddress ia=null;int clientPort=0;tryserverSocket=new .DatagramSocket(UDP);dp=new DatagramPacket(rMsg,rMsg.length);catch(SocketException se)se.printStackTrace();while(exitwhile=false) /始终监听状态tryserverSocket.receive(dp);ia=dp.getAddress();clientPort=dp.getPort();System.out.println( UDP Ip:+ia+ port:+clientPort);rMsg=dp.getData();char c=new chardp.getLength()/2;for(int i=0;idp.getLengt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论