Java即时通讯软件的开发与挑战

本文旨在介绍一个功能完备的Java即时通讯软件,该软件具备商业即时通讯软件如雅虎或MSN所提供的所有特性。虽然它无法与这些商业软件相媲美,但这是学习高级Java和JNI概念的尝试。在开发过程中,经常通过查阅众多网站来克服遇到的挑战,这些网站几乎总能解决当前面临的问题。这不仅提高了学习曲线,而且相信对也会有同样的效果。当然,软件中可能存在一些bug和问题,希望能谅解。感谢任何愿意报告这些问题或提出改进建议的人。

系统需求

运行聊天服务器需要Windows/WinNT/Solaris系统。聊天客户端则需要Windows/WINNT系统。需要JDK 1.3或更高版本(尽管还没有测试过更低版本的JDK)。

面临的挑战

1. 构建服务器和客户端框架代码。服务器和客户端使用TCP套接字进行通信,并通过服务器-客户端传递MESSAGE Java对象。MESSAGE对象被序列化并通过TCP套接字作为字节发送。

2. 构建SWING组件。客户端承担了Java.Swing的所有复杂性,并测试了一些Swing组件。服务器是一个纯粹的基于控制台的客户端,与客户端相反。客户端广泛使用Swing组件,值得一提的有:

  • 用户列表 - 使用JTree,其外观和感觉类似于雅虎的,客户端登录、注销和状态更改时会更新。
  • 聊天对话框 - 使用JFrame,其中JTextArea用于输入消息,JEditorPane用于显示接收到的消息。选择JEditorPane的原因是它能够显示HTML文本。这有助于轻松添加表情符号和其他HTML标签,如FONT、IMG等。尝试在这里使用所有雅虎表情符号,如:), >:), :))等,看看结果。
  • 会议对话框 - 类似于聊天对话框,并增加了一个JList组件,用于显示可用用户列表。
  • JWindow - 用于显示启动画面。当然,图片是画的。
  • 系统托盘图标 - 将聊天最小化到系统托盘是即时通讯软件的主要功能之一。这是通过JAWT调用实现的。以下代码及其源代码可在以下网站找到,感谢其创建者。
http://jeans.studentenweb.org/java/trayicon/trayicon.html

闪烁窗口 - 通过JNI调用实现,调用Win API all FlashWindow(HWND,BOOLEAN)和javax.swing.Timer来闪烁窗口。

运行步骤

1. 将压缩包内容解压到一个文件夹中。确保该目录中有以下文件:

  • Talk2Me.jar
  • TrayIcon12.dll
  • Client.dll

2. 转到目录并首先运行服务器。命令是:

java -classpath Talk2Me.jar Server

(运行服务器不需要dll,服务器可以在任何安装了JDK的WIN/SOLARIS机器上运行)

3. 现在启动客户端。

javaw -jar Talk2Me.jar (仅限WINDOWS)

在大多数机器上,只需双击JAR文件即可启动程序。

4. 输入任何用户名和密码,并确保在登录对话框中输入服务器正在运行的正确服务器IP。可以是有效的名称,如localhost, 127.0.0.1, 172.22.11.88...等。

编写这个通讯软件纯粹是为了作为其他程序员的知识库。请不要将此通讯软件用于商业目的或其他任何目的。任何希望修改代码以满足自己需求的人,请在这样做之前征得同意。请确保通过邮件告诉想要修改代码的确切目的。

就是这样,伙计们。已经尽力使代码易于理解,当然,做任何事情总是有不止一种方法,如果能建议更好的方法,那将非常有帮助。评论和反馈总是受欢迎的。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485