Talk2Me:Java 即时通讯器
一个接近完美的 Yahoo 即时通讯工具克隆。纯粹用 Java 和 SWING 编写,这个通讯工具还使用 JNI 和 JAWT 的功能来提供一些特性。
引言
我在这里尝试介绍的是一个功能齐全的 Java 即时通讯工具,它具有像 Yahoo 或 MSN 这样的商业通讯工具提供的所有功能。 虽然它不能与这些通讯工具相提并论,但这是我学习高级 Java 和 JNI 概念的一次尝试。 我在这里面临的挑战通常是通过参考许多网站来克服的,这些网站几乎完全或完全解决了我在那个时间点面临的问题。 它提高了我的学习曲线,并且相信也会对您产生同样的效果。 当然,有一些错误和小故障,我希望您能原谅。 感谢任何花时间报告它们甚至建议我更好做事方式的人。系统要求
Window/WinNT/Solaris(用于运行聊天服务器)Windows/WINNT (用于运行聊天客户端)
JDK Ver1.3 或更高版本(虽然我没有用更低版本测试过)
面临的挑战
1. 构建服务器和客户端框架代码。 服务器和客户端使用 TCP 套接字进行通信,并且一个 MESSAGE java 对象在服务器-客户端之间传递。 MESSAGE 对象被序列化并通过 TCP 套接字作为字节发送。2. 构建 SWING 组件。 客户端承担 java.Swing 的所有复杂性,并将一些 Swing 组件用于橡胶测试。服务器是一个纯粹基于控制台的客户端,与客户端相反。 客户端广泛使用 Swing 组件,以下值得一提。
用户列表 - JTree,其 L&F 类似于 YAHOO 的 L&F,它在客户端登录、注销和状态更改时更新。
ChatDialog - JFrame,带有用于键入消息的 JTextArea 和用于显示接收到的消息的 JEditorPane。 我选择 JEditorPane 的原因是能够显示 HTML 文本。 这帮助我轻松地添加表情符号和其他 HTML 标签,例如 FONT、IMG 等。 尝试此处的所有 YAHOO 表情符号,例如 :), >:), :)) 等,看看结果。
ConferenceDialog - 类似于 ChatDialog,并且另外有一个 JList 组件,用于显示可用的用户列表。
JWindow - 用于显示启动画面。 这张照片当然是我画的。
系统托盘图标 - 将聊天最小化到系统托盘是即时通讯工具的主要功能之一。 这是通过 JAWT 调用实现的。 以下代码及其完整源代码可在以下网站上找到,感谢其创建者。
http://jeans.studentenweb.org/java/trayicon/trayicon.html[^]
闪烁窗口 - 通过 JNI 调用实现,该调用调用 Win API all FlashWindow(HWND,BOOLEAN) 和一个 javax.swing.Timer 来闪烁窗口。
运行步骤
1. 将 zip 文件的内容解压缩到文件夹中。 确保该目录中包含以下文件。Talk2Me.jar
TrayIcon12.dll
Client.dll
2. 进入该目录并首先运行服务器。 命令是,
java -classpath Talk2Me.jar Server
(运行服务器不需要 dll,并且服务器可以在安装了 JDK 的任何 m/c WIN/SOLARIS 中运行)
3. 现在启动客户端。
javaw -jar Talk2Me.jar (仅限 WINDOWS)
在大多数机器上,只需双击 JAR 就会调用该程序)
4. 提供任何用户名和密码,并确保在登录对话框中提供运行服务器的正确服务器 IP。 它可以是有效名称,例如 localhost、127.0.0.1、172.22.11.88...等等。
注意
我编写这个通讯工具纯粹是为了作为其他程序员的知识库。 请避免将此通讯工具用于商业目的或任何目的。 任何希望修改代码以满足自身需求的人,请在这样做之前征得我的同意。 请务必给我发邮件,说明您要修改代码的确切目的。
就这样了。 我已尽力使我的代码易于理解,当然,总有不止一种方法可以做任何事情,如果您能为我提供更好的做事方式,那将很有帮助。 欢迎您的评论和反馈。
感谢您,祝您消息愉快。
Alfred Jayaprakash