65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Windows Sockets 的网络聊天程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.58/5 (10投票s)

2000年8月30日

viewsIcon

126745

downloadIcon

7232

一个允许同一网络上的用户使用 TCP/IP 协议相互通信的程序

  • 下载源代码 - 65 Kb
  • 下载应用程序 - 18 Kb
  • 引言

    LanTalk 是我很久以前编写的一个网络程序,当时我正在摸索 Windows 编程-SDK 风格。我最近在硬盘上发现它积满灰尘,于是觉得把它提供给其他开发者会是个好主意,尤其是对于那些正在进行 Windows Sockets 相关工作的人。我稍微打扫了一下, voilà,您现在看到的是这个有用程序的最新版本。

    LanTalk 本质上是一个允许同一网络上的用户使用 TCP/IP 协议相互通信的程序。LanTalk 大量使用 Sockets,其灵感来自 Win-Popup,这是一个功能类似但更强大的程序,曾是 Windows 95 的一部分(当时还没有 Windows 98!)。

    LanTalk 带来了一些有趣的东西… Sockets、炫酷的动画、线程… 动画光标… 上下文敏感帮助等。因此,我希望它将是一个很好的学习范例,您可以从中获得很多(没有双关语)借鉴。

    如何使用 LanTalk

    1. 确保 LanTalk.exe 和 LanHelp.hlp 文件位于同一个文件夹中。
    2. 运行程序。最初,程序处于被动状态,没有监听来自其他 LanTalk 用户的连接。
    3. 点击“Listen”按钮。程序现在会关注传入的连接。
    4. 在“Listen”状态下,您可以通过勾选最小化程序的选项来最小化 LanTalk。当有传入连接时,程序会弹出;您始终可以通过点击任务栏上的图标来恢复程序。
    5. 当您连接并收到消息时,“Receive”按钮会被启用,并且会生成默认的蜂鸣声(可能因计算机而异)。点击此“Receive”按钮以获取您的消息。消息状态面板还会显示您是否有传入消息。

    假设您想连接到另一个 LanTalk 用户(为此,对方必须正在“Listen”状态下运行 LanTalk),请执行以下操作:

    1. 在“Update Host List”编辑框中输入计算机标识名称。然后点击“Add”按钮。您可以从“控制面板/网络/Identification”选项卡获取此 ID。对您 LAN 上所有可用的 ID 都执行此操作。
    2. 从“Host Selected”组合框中选择任何所需的名称。这是您将连接到的名称/ID。您可以通过选择一个 ID 并点击“Delete”按钮来删除它。
    3. 选择一个有效的 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 拥有。保留所有权利。本软件不包含任何形式的明示或暗示的保证;请自行承担使用风险,因使用本软件而可能造成的任何损害的责任完全由用户承担。

    © . All rights reserved.