没有合适的资源?快使用搜索试试~ 我知道了~
首页Java实现的简单即时通讯工具:设计与安全性优化
本文档主要探讨了基于Java的简单即时通讯工具的设计与实现过程。随着互联网的发展,即时通讯已成为主流的交流方式,各种类型的即时通讯软件如雨后春笋般涌现。Java作为一种广泛使用的开发语言,以其跨平台、安全、多线程、网络Socket编程以及数据流处理等特性备受青睐。作者借鉴开源即时通讯工具LinuxQQ的经验,利用Java语言和J2EE规范,设计了一款名为JICQ的即时通讯工具。 JICQ的设计涵盖了系统的体系结构分析,通过使用统一建模语言(UML)和面向对象的分析与设计方法,作者借助Rose这一建模工具,确保了系统设计的结构清晰和模块化。该系统构建在Java SE 1.5和Java EE 1.4平台上,采用Eclipse等开发工具进行开发,同时采用了重构开发技术,旨在优化代码质量和系统性能。 系统的关键技术包括多线程处理,以提高并发性和响应速度,以及Socket编程,这是实现客户端与服务器之间实时通信的基础。此外,JSP (JavaServer Pages)也被应用在系统前端,用于构建动态网页,提供用户友好的界面。整个系统设计目标在于实现安全、高效、易用,能够适应不同的操作系统环境,确保在各种平台上的稳定运行。 这篇文档深入介绍了如何利用Java语言的优势,结合J2EE框架,开发出一个功能齐全且可扩展的即时通讯工具,这对于理解和实践Java即时通讯应用开发具有很高的参考价值。通过学习本文,读者可以了解到如何在实际项目中运用这些技术和方法,提升自己的编程技能。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/87885489/bg6.jpg)
第 30 页 共 30 页
方便的。
跨平台:Java 语言的一个非常重要的特点就是与平台的无关性。而使用 Java
虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至
少需要编译成不同的目标代码。而引入 Java 语言虚拟机后,Java 语言在不同平
台上运行时不需要重新编译。Java 语言使用模式 Java 虚拟机屏蔽了与具体平台
相关的信息,使得 Java 语言编译程序只需生成在 Java 虚拟机上运行的目标代码
(字节码),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,
把字节码解释成具体平台上的机器指令执行。
1.2 该系统设计的意义
伴随着当今互联网迅速发展,网上通讯成为一种必不可少的通讯习惯,该系
统的设计就是为了实现在互联网上的即时通讯,它是利用当今最为流行的 java
编程语言来实现即时通讯工具的雏形,同时在系统开发过程中所用的都是 java
常用的技术或者难点,比如用 java 的 swing 怎么去做一个界面美观的应用程序、
java 的网络编程技术的原理与应用、以及如何根据 J2EE 规范去开发一个基于
Jsp 和 Servlet 的 Web 应用等关键技术。通过设计和开发该系统,使自己所学的
理论知识得到实践应用,也对即时通讯软件的通讯原理有了比较深刻的认识,大
大的提高了自己的动手能力和解决问题的能力,为今后工作打下坚实的基础。
2 相关理论及基础技术与开发平台
2.1 即时通讯应用工作原理分析
我们经常听到TCP/IP和UDP(用户数据报协议)这两个术语,它们都是建立在
更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经
分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格
保证数据正确性的文件传输协议。而后者是以数据报的形式,对拆分后的数据的
先后到达顺序不做要求的文件传输协议。
QQ就是使用UDP协议进行发送和接收“消息”的。当你的机器安装了OICQ以
后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,
你的OICQ作为Client连接到腾讯公司的主服务器上,当你“看谁在线”时,你的
OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙
伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的
形式,在计算机之间传送。如果你和对方的连接不是很稳定,QQ服务器将为你
们的聊天内容进行“中转”。其他的即时通信软件原理与此大同小异。
OICQ的通讯原理:
1.用户首先从QQ服务器上获取好友列表,以建立点对点的联系。
2.用户( Clientl)和好友(Client2)之间采用UDP方式发送信息。
![](https://csdnimg.cn/release/download_crawler_static/87885489/bg7.jpg)
第 30 页 共 30 页
3.如果无法直接点对点联系,则用服务器中转的方式完成。我们看到两个OICQ
用户如果是在两个不同的内网上,它们经过登录后可以不同过服务器来
直接通讯。那这是为什么呢。其根本原因是OICQ使用了UDP协议,这样用
户之间的通讯自己完成就减少了服务器的负担。那么到底原理是什么样
的,为什么TCP应用就不能达到这一要求。这就涉及到NAT ( Network
AddressTranslator)技术。NAT技术使得一个私有网络可以通过internet
注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器
在发送数据包之前,负责把内部IP翻译成外部合法地址。内部网络的主
机不可能同时与外部网络通信,所以只有一部分内部地址需要翻译。
"NAT"的翻译可以采取静态翻译和动态翻译两种。静态翻译将内部地址和
外部地址一对一对应。当使用了动态翻译时就采用port multiplexing技
术,通过改变外出数据的源port技术可以将多个内部IP地址影射到同一
个外部地址,这就是PAT (port address translator)。在这种情况下,
一个TCP连接只能和固定的连接方通讯,而UDP应用本身就可以接受不同
数据来源的数据包,所以在NAT转换的时候能够完成两个客户端之间的通
讯,从而达到了客户端直接通讯的目的。
总的来说,OICQ 的应用在客户端方面符合即时通讯系统的模型。客户端之
间的通讯中,采用了 UDP 的通讯方式,当客户端之间无法直接通讯时,采用通过
服务器转发的方式来实现即时信息的传送。
2.2 所用技术
JAVA 多线程技术:多线程的各个线程看上去像是并行地独自完成各自的工
作,就像一台一台计算机上运行着多个处理机一样。在多处理机计算机上实现多
线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运
行的效率。而作为接受客户端请求的服务器来说,必须使用多线程技术来接受不
同时刻的请求,接收一个处理一个,将其放入线程队列,然后继续监听其他的请
求。
网络通讯与 Socket 编程:java 网络编程中有两种不同的通讯协议,分别是
TCP(面向连接)与 UDP(面向无连接),两种协议各有优缺点。
TCP:是 Tranfer Control Protocol 的简称,是一种面向连接的保证可靠传
输的协议。通过 TCP 协议传输,得到的是一个顺序的无差错的数据流。发送方和
接收方的成对的两个 socket 之间必须建立连接,以便在 TCP 协议的基础上进行
通信,当一个 socket(通常都是 server socket)等待建立连接时,另一个
socket 可以要求进行连接,一旦这两个 socket 连接起来,它们就可以进行双向
数据传输,双方都可以进行发送或接收操作。
剩余32页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://profile-avatar.csdnimg.cn/5d3d17b770eb4c6785682f01b138d5bc_z9894.jpg!1)
悠闲饭团
- 粉丝: 182
- 资源: 3378
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)