使用 Windows Sockets 的网络聊天程序






3.58/5 (10投票s)
2000年8月30日

126745

7232
一个允许同一网络上的用户使用 TCP/IP 协议相互通信的程序
引言
LanTalk 是我很久以前编写的一个网络程序,当时我正在摸索 Windows 编程-SDK 风格。我最近在硬盘上发现它积满灰尘,于是觉得把它提供给其他开发者会是个好主意,尤其是对于那些正在进行 Windows Sockets 相关工作的人。我稍微打扫了一下, voilà,您现在看到的是这个有用程序的最新版本。
LanTalk 本质上是一个允许同一网络上的用户使用 TCP/IP 协议相互通信的程序。LanTalk 大量使用 Sockets,其灵感来自 Win-Popup,这是一个功能类似但更强大的程序,曾是 Windows 95 的一部分(当时还没有 Windows 98!)。
LanTalk 带来了一些有趣的东西… Sockets、炫酷的动画、线程… 动画光标… 上下文敏感帮助等。因此,我希望它将是一个很好的学习范例,您可以从中获得很多(没有双关语)借鉴。
如何使用 LanTalk
- 确保 LanTalk.exe 和 LanHelp.hlp 文件位于同一个文件夹中。
- 运行程序。最初,程序处于被动状态,没有监听来自其他 LanTalk 用户的连接。
- 点击“Listen”按钮。程序现在会关注传入的连接。
- 在“Listen”状态下,您可以通过勾选最小化程序的选项来最小化 LanTalk。当有传入连接时,程序会弹出;您始终可以通过点击任务栏上的图标来恢复程序。
- 当您连接并收到消息时,“Receive”按钮会被启用,并且会生成默认的蜂鸣声(可能因计算机而异)。点击此“Receive”按钮以获取您的消息。消息状态面板还会显示您是否有传入消息。
假设您想连接到另一个 LanTalk 用户(为此,对方必须正在“Listen”状态下运行 LanTalk),请执行以下操作:
- 在“Update Host List”编辑框中输入计算机标识名称。然后点击“Add”按钮。您可以从“控制面板/网络/Identification”选项卡获取此 ID。对您 LAN 上所有可用的 ID 都执行此操作。
- 从“Host Selected”组合框中选择任何所需的名称。这是您将连接到的名称/ID。您可以通过选择一个 ID 并点击“Delete”按钮来删除它。
- 选择一个有效的 ID 以连接后,点击“Connect”按钮。LanTalk 将尝试连接到您 LAN 上的那台计算机。
如果 LanTalk 无法连接,原因可能如下:
- 计算机未运行 LanTalk/未开启。
- LAN 上不存在该计算机 ID。
如果连接成功,请在“Messages Out”编辑框中键入要发送的消息,然后点击“Send”。
- 如果 LanTalk 无法发送或接收消息,失败原因将显示出来。在这种情况下,最好点击“Disconnect”并重新开始。
- 如果在连接的会话期间任一端断开连接,另一端将收到“LanTalk Disconnected”消息。
- 您也可以使用上下文敏感帮助-将焦点移至所需的控件并按 F1。或者,点击对话框右上角的“?”按钮。执行此操作后,“?”会随着鼠标光标移动。将光标置于您需要更多信息的控件上,然后左键单击。
一些限制
- 用户手动配置 LanTalk 以反映 LAN 上所有可用的计算机(ID)。此过程可以自动化。
- 目前只有两个用户可以积极参与连接并进行聊天。因此,其他 LanTalk 用户无法向已连接的 LanTalk 用户发送消息。
- 上述原因如下:当前 LanTalk 维护一个用于传入连接的单个线程。该线程维护一个监听传入调用的服务器套接字。一旦建立连接,该线程中的服务器套接字将被关闭,并且该线程将终止-这会禁用来自其他用户的进一步连接。理想情况下,该线程应该继续监听具有打开的服务器套接字,并且一旦套接字与监听套接字连接,新绑定的套接字应该被移动到套接字链接列表中,而原始套接字继续监听。这样,任何数量的用户都可以连接到 LanTalk 服务器,从而实现一对多聊天会话。但是,对于这种架构,应该有一个运行的 LanTalk 服务器,供其他客户端连接,而不是目前的方式(程序运行在每台机器上)。目前,该程序既是客户端*又是*服务器。
- 当前运行的程序应该图标化在系统托盘中,而不是显示在任务栏上-点击后即可启动。
免责声明
LanTalk 版本 1.0。版权所有 (C) 2000 由 Shanker.C 拥有。保留所有权利。本软件不包含任何形式的明示或暗示的保证;请自行承担使用风险,因使用本软件而可能造成的任何损害的责任完全由用户承担。