说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用VB设计聊天室

HTML文档下载 WORD文档下载 PDF文档下载
利用VB设计聊天室
作者:何书臣
Internet 上 的 聊 天 室 一 向 是 一 个 吸 引 人 的 地 方, 但 多 用C 语 言 设 计, 我 用VB 设 计 了 一 个 聊 天 室, 取 名 为“ 升 达 自 由 论 坛”, 实 际 使 用 证 明 效 果 良 好。
---- Internet 上 的 通 讯 协 议 是TCP/IP,Internet 上 数 据 传 输 协 议 主 要 有TCP 和UDP,TCP 是 有 连 接 协 议, 它 要 求 计 算 机 进 行 对 话 时 必 须 先 建 立 连 接, 保 证 数 据 传 送 安 全 到 达 目 的 地。 UDP 是 无 连 接 协 议, 它 只 是 将 信 息 送 到 网 络 上, 并 不 检 查 数 据 是 否 到 达 了 目 的 地。 要 进 行 实 时 会 话, 则 应 该 采 用TCP 协 议。 本 程 序 采 用 的 协 议 就 是TCP 协 议。

---- 程 序 分 服 务 和 客 户 程 序 两 部 分。 客 户 程 序 启 动 后 首 先 与 服 务 器 连 接, 连 接 成 功 后, 随 意 输 入 一 个 名 字 即 可 进 入 聊 天 室; 服 务 程 序 则 负 责 维 护 与 每 一 个 客 户 的 连 接 和 数 据 交 换, 并 且 记 录 下 所 有 聊 天 内 容, 及 人 员 名 单。 由 于 在 会 话 过 程 中 大 家 起 的 都 是 假 名 字, 不 可 避 免 地 要 有 的 人 讲 一 些 不 健 康 内 容, 为 了 保 持 秩 序, 服 务 器 程 序 实 现 了IP 地 址 跟 踪 功 能。 管 理 人 员 可 以 很 容 易 地 查 找 出 每 一 个 匿 名 的 计 算 机 名, 并 对 之 进 行 警 告 或 其 它 处 理( 下 面 会 进 一 步 介 绍)。 可 保 证 会 话 内 容 的 健 康。 如 果 服 务 器 程 序 关 闭, 则 所 有 客 户 程 序 自 动 关 闭。

VB5 的Winsock 控 件

---- VB5 企 业 版 提 供 了Winsock 控 件, 要 实 现 两 台 计 算 机 的 对 话, 可 以 通 过Winsock 控 件 进 行。 而 不 需 了 解 更 多 的 数 据 传 输 细 节, 本 程 序 就 是 通 过Winsock 进 行 的。
---- Winsock 有 多 种 属 性、 方 法 和 事 件, 本 文 只 列 举 出 要 使 用 的 属 性、 方 法 和 事 件。

---- ... ...

---- 一 个Winsock 控 件 可 以 建 立 与 一 个 计 算 机 的 联 接, 服 务 器 程 序 中 首 先 设 置 一 个Winsock 控 件, 将 其 索 引 值 设 为 0, 以 便 在 运 行 时 动 态 增 减 元 素, 这 样 可 以 与 多 个 计 算 机 进 行 对 话。

程 序 介 绍

---- 服 务 程 序 部 分

---- 服 务 器 程 序 启 动 时, 先 设 置 自 己 的 本 地 端 口, 因 为 有 些 端 口 有 其 固 定 的 作 用, 如80 是WWW 端 口, 故 尽 可 能 选 择 不 可 能 使 用 的 端 口, 这 里 我 选 择 了1600。 将 连 接 状 态 设 置 为 假, 然 后 开 始 进 行 侦 听。 当 侦 听 到 有 计 算 机 要 求 与 服 务 器 进 行 对 话, 就 接 受, 并 记 录 下 客 户 机 的 地 址、 端 口、 客 户 起 的 匿 名, 将 连 接 状 态 设 置 为 真, 将 上 述 内 容 存 入 一 个 用 户 自 定 义 的 数 组 中, 进 行 动 态 维 护。 用 户 自 定 义 数 据 类 型 如 下:

Private Type ActiveUser
ClientIP As String 记录客户的IP地址
ClientName As String 记录客户的匿名
ClientPort As Integer 记录当前会话的端口
ClientConnected As Boolean
客户连接状态,True表示已连接,False表示没有连接
End Type


---- 做 完 这 些 工 作 后, 服 务 器 再 调 入 一 个 新 控 件, 进 行 新 的 侦 听, 如 此 反 复 不 断。 如 果 有 客 户 退 出 , 则 关 闭 相 应 的 连 接。 注 意 不 能 在 客 户 端 关 闭 连 接, 否 则 会 产 生 错 误, 只 能 由 服 务 器 关 闭 连 接。 服 务 器 程 序 主 要 对 象 设 置

.
.
.


---- 利 用 上 述 对 象 可 以 实 现 服 务 器 的 各 种 功 能, 当 然, 还 可 以 再 加 入 新 控 件, 以 使 界 面 更 美 观。

---- 服 务 程 序 中 三 个 关 键 程 序 段 如 下:

---- 1 . 处 理 连 接 请 求

---- sckServer_ConnectionRequest 过 程 处 理 连 接 请 求, 当 远 程 计 算 机 要 求 连 接 时, 服 务 器 首 先 检 查 用 户 自 定 义 数 组 中 是 否 有 空 闲 位 置( 因 为 在 谈 话 中 途, 肯 定 会 有 人 退 出, 所 以 会 产 生 空 闲 位 置), 如 果 有 则 选 择 空 闲 位 置 给 予 要 求 连 接 的 客 户, 否 则 将 数 组 维 数 加 一, 将 之 给 予 请 求 连 接 的 远 程 节 点。 错 误 处 理 主 要 是 忽 略 两 个 或 两 个 以 上 的 客 户 同 时 要 求 连 接 时 产 生 的 地 址 冲 突 现 象。

---- ... ...

---- 2 . 处 理 处 于 连 接 状 态 的 用 户 发 送 来 的 信 息

---- sckServer_DataArrival 过 程 处 理 客 户 端 传 来 的 数 据。 当 有 数 据 发 送 过 来 后, 服 务 器 首 先 接 收 数 据, 调 用 自 定 义 过 程HandleOtherMessage 检 查 是 谈 话 内 容 还 是 其 它 信 息, 如 果 是 其 它 信 息, 则 在HandleOtherMessage 中 进 行 处 理, 否 则 在 本 过 程 中 进 行 处 理。

---- 因 为Winsock 控 件 将 数 据 首 先 送 至 缓 冲 区, 待 缓 冲 区 满 才 发 送 信 息, 这 显 然 不 能 保 证 适 时 对 话, 用Doevents 语 句 可 确 保Windows 将 数 据 及 时 送 出。 其 中 的 错 误 处 理 程 序 处 理 当 远 程 计 算 机 非 正 常 关 闭 程 序 时 产 生 的 错 误, 因 为 此 时 服 务 器 并 不 知 道 它 已 关 闭, 仍 然 向 它 发 送 信 息, 这 样 就 会 产 生 错 误, 导 致 服 务 程 序 关 闭, 中 断 整 个 谈 话。 处 理 方 法 只 是 简 单 地 关 闭 掉 该 连 接 即 可。

---- ... ...

---- 3. 关 闭 客 户 连 接

---- sckServer_Close 过 程 关 闭 与 客 户 的 连 接, 删 除 控 件, 收 回 系 统 资 源, 将 该 位 置 的 连 接 状 态 设 置 为 假, 以 便 有 用 户 请 求 连 接 时 继 续 使 用。 它 一 般 由HandleOtherMessage 过 程 调 用

---- ... ...

---- 如 何 保 证 聊 天 内 容 的 健 康 是 一 个 很 重 要 的 方 面, 在Internet 上, 我 们 对 谈 话 内 容 不 健 康 者, 只 有 将 之 开 除 出 聊 天 室。 但 在 局 域 网 上 则 可 以 查 出 是 谁 谈 话 不 文 明( 局 域 网 环 境 为Windows NT4.0 服 务 器,Windows 95 工 作 站)。 方 法 如 下: 在95 工 作 站 上 将 网 络 中 的TCP/IP 协 议 中 的IP 地 址 选 项 设 为 动 态 获 得IP 地 址, 在NT 服 务 器 上 用DHCP 管 理 工 具 为 每 一 个 客 户 机 进 行IP 地 址 动 态 分 配。 聊 天 服 务 程 序 记 录 下 来 了 每 一 个 客 户 的IP 地 址, 我 们 就 可 以 通 过DHCP 管 理 工 具 很 容 易 地 查 出 某IP 地 址 对 应 的 计 算 机 名, 并 进 行 处 理。

客 户 程 序 部 分

---- 客 户 程 序 启 动 时 首 先 设 置 服 务 器 的 地 址 及 端 口, 这 里 我 直 接 使 用 了“192.168.0.2”, 这 是 我 的 服 务 器 地 址, 可 以 在Form_load 过 程 中 设 置 你 自 己 的 服 务 器 地 址, 也 可 在 程 序 开 始 时 让 用 户 输 入 服 务 器 地 址 以 增 加 灵 活 性。 时 钟 控 件 用 以 与 远 程 节 点 进 行 自 动 连 接。
---- ... ...

---- 客 户 程 序 主 要 对 象 设 置

---- ... ...

---- “” 显 示 所 有 正 在 聊 天 室 中 的 用 户 名

---- 显 示 当 前 的 状 态( 用 户 名,IP 地 址 及 是 否 密 谈)

---- 与 服 务 器 程 序 一 样, 这 里 列 出 的 并 非 全 部 的 控 件, 但 是 已 经 足 以 完 成 工 作。

---- 客 户 程 序 中 的 自 定 义 类MyMessage 用 来 记 录 自 己 的 信 息,

---- ... ...

---- 类 中 的 变 量cmdExitClick 用 来 记 录 用 户 是 否 按 了 退 出 按 钮, 如 果 是 按 了 退 出 按 钮 则 为 真。 当 用 户 选 择 了 系 统 的 窗 体 关 闭 菜 单 而 没 有 按 退 出 按 钮 时 将 会 产 生 错 误, 因 此 用 它 来 记 录 是 如 何 退 出 的, 如 果 选 择 了 系 统 的 窗 体 关 闭 菜 单, 则 执 行 一 次cmdExit_Click() 过 程, 以 确 保 无 误。

---- 客 户 退 出 时, 不 是 简 单 地 关 闭 自 己 的Winsock 控 件, 而 是 发 送 一 个 字 符 串( 我 采 用 了 一 个 大 家 在 聊 天 时 很 难 用 到 的 字 符 串“=_RE”) 给 服 务 器, 表 明 自 己 要 退 出, 由 服 务 器 端 关 闭 连 接, 进 而 关 闭 自 身。

VB使用超链接和发送Email VB使用浏览器的文件复制对话框 输入/输出篇 -VB资料 通过WnetEnumResource函数获得网络资源 -VB资料 通往 Internet 的捷径-VB资料 显示计算机的名称 -VB资料 VB用 MAPI 控件实现发送邮件 VB用 WinSock 控件下载文件 VB用 Winsock 实现聊天的程序 VB用Internet Transfer编写FTP程序 VB用Sockets发送电子邮件 用VB 创建自己的通信程序 用VB5.0开发通信软件的技巧 用VB5开发IE 用VB编写网络寻呼 用VB编写小型的网络系统 用VB创建自己的通信程序 用VB构建Internet的应用 用VB开发标准CGI程序 用VB实现客户——服务器(TCP/IP)编程实例 用VB实现聊天讨论室和点对点会话 用VB写一个定时PING某IP的程序 用VB制作浏览器 用Visual Basic 5.0设计E-mail程序(MAPI) 用Visual Basic6.0编写客户服务器程序 用Visual Basic创建FTP组件 用Visual Basic开发数据库浏览器 用Visual Basic轻松地设计Browser及Ftp程序 VB用Winsock控件发信Email VB用Winsock实现点对点通信 邮件检查程序(二) -VB资料 关于多态性的理解,对吗? 如何知道1个类是不是存在? ??请教:我的程序 help!help! 如何对程序执行动作放缓慢! 很小很小的问题!! 棘手问题??急急!!! 各位懂软件测试的朋友,请介绍一些资料给我,非常感谢! 菜鸟问个调试问题,别见笑! 请介绍一下学数据库应学什么开发工具更好些,除了sql语言? 请教一个关于TextArea区域中数据显示的问题 高分求以二进制方式打开文件 哪里能找到dialogic卡的VN协议? 求解:BC++3.1 or high编程在DOS下连接interbase server 高手快进!!!一个DataReport报表的异步操作问题( MYSQL的帮助文档哪里有下载?谢谢 求,谁有zip unzip的源代码 菜鸟的问题,送分来了! 有谁知道什么是SDD吗?请指教!!!!别吝惜呀!!^o^ 简单的右键弹出菜单问题…… 我想编一个pop3服务器,适用于windows iis,给点提示吧 编译SERVLET时老出现"...包 javax.servlet 不存在..." ? 请教关于 98中 Personal web Server的问题 辽宁4:0狂胜广东,爽丫!SB广东解说员居然说中国足球没戏了~~~~~~~~~~ 用APPLET做一个上传的东西可以吗???? "我的问题"栏中,只剩下未解决的了,已给分的为何都不见了? 在CSDN和大富翁都没人会答的简单OLE问题,唉! 我是shijie819有问题?? 各位高人,看看代码,不能输入汉字只能输入英文,问题在那里? 如何将编好的n个模块连接到一个工程 请教!关于listbox的列属性? Applet为什么能在JBuiler5中调试,而不能在浏览器中显示 SOS!谁有语音卡编程的经验和资料,恳请指教!给分的! 谁有用VC++中ODBC API 编写数据库的例子? sql server 有沒有邏輯型字段!!! 电娃娃领分!!!!---goldsun发 猛禽进来拿分. 谁有画线的函数源码,参数为两点坐标? 如何将xml中的数据转换成动态的数据图形显示啊 有谁可以讲讲有关KV3000的A盘..... 没有问题 请问斑竹:是不是以前的得分时间长了会没有了? 小弟向大哥大姐们请教VB数据库问题! 考研问题请教!!!! 这个问题和apache配置有关吧! 哪里有比较稳定而且空间大、速度快的主页空间? 向高手请教!如何实现网络DDE ie的internet选项菜单项被锁定,如何解开(急,马上给分) 回答者有分 我需要JAVA-JDBC打开数据库的原码.................. 很想给datawindow 加上一个标题栏, 可加上后是灰色的 :( 可变成蓝色的吗? 爸爸去哪观后感700字作文 中秋节的作文800字快 《正在长大的我》作文600字初一作文 和谐主题作文素材以下方面给和谐下个定义新颖的立意新颖的事例 名人名言 比喻论证 精彩论文结构 读雷锋的故事有感作文 500字 怎样写传统习俗的作文 作文素材 和谐的事例 读雷锋的故事有感 作文 民俗风俗作文 请给一些有关绿色环保和谐的作文材料急,两天以内 2010广州亚运作文素材 民俗风情作文 能直接写入文章的素材, 文明礼仪资料 读书示小妹十八生日书倒数第二段“全然跪倒来读”怎么理解? 作文《我心中的曹操》300字 亚运礼仪小信使作文10:43 宋新妮 新发表i贴3篇 读书示小妹十八生日书中的读书目的 谁能给我关于三国曹操的作文 300字 用“书书书读读读好好好”九个字写出3句有不同意义的句子?一个字也不能少 《读书示小妹十八生日书》 小妹如何答信 文章 品读曹操的作文100字左右 潮州的春节习俗 快乐作文快乐成长500字 如何评价曹操 300字小论文 摘抄书中好词好句,下面写一段感受,这算读书笔记吗? 成长中的快乐作文(500字)写清楚事例! 我眼中的曹操300字作文要怎么写这作文…写个意思就行了…300字就好了…谢谢… 我要一篇潮州习俗的作文,400到500字,不要过年的啊 成长的快乐作文500字 中秋节作文 800字 请告诉我你喜欢的书籍名称及其作者,书中的好词,好句,好段和你看后的感受. 成长快乐作文(500多字) 有关曹操200字的小论文,注意要有他的事例,并且加以评论,速求!速求!回答问题的仁兄注意了,要的事例不必太详细,但要突出曹操同志“伟大滴精神”,懂不? 适合小学三年级学生读的书有哪些?其中书里的好词好句都有哪些?请问读后有什么感想?这个是我家小妹妹问我的问题,可是我现在离我的小学三年级好遥远,有些记不得了,希望知道的朋友多多 求助一篇关于青春的800字的高中作文 急除诗歌外,文体都可以,要求写青春的寂寞,青春的无奈,青春的感伤,自己心中的孤单,无奈,烦恼,文章细腻,不要说什么大道理,符合现实,当然了,有诗歌的话 对曹操的评价,200字左右 求“快乐成长快乐作文"有关的作文 高中800字关于青春的作文 .不要太有哲理,不要太有文采,越普通越好.不能让老师认为是上网抄的 以和谐的竞争为题 800字 以《我眼中的曹操》为话题200字作文知道的说下,我会给你分的、 以《尊严》为题目的800字作文 急,中秋节作文800字,不要重复的 以“发现中国”为话题的作文素材``是素材哦``给个灵感``我会自己写``5个左右的素材``一定要小角度,不要汶川地震啊``奥运之类的``这些坚决杜绝··我知道很难,下面是作文要求:内容可选取 快乐作文快乐成长急 写一篇关于希腊故事读后感的作文,200字左右+5悬赏财富 惊喜的发现作文素材 面对失败 保持尊严作文800字 写一篇关于希腊故事读后感的作文,400字左右!急! 素材或作文---生活中的新发现我们在生活中总有一些新的发现.如:荷叶上的水总是会变成晶亮的小珠子,到秋天苹果就红了,我们小区的私家车越来越多,小河变清了···要是直接是作文就更好 快乐作文,快乐成长 记叙生活中的喜怒哀乐,关注成长中的点点滴滴,你经历中的每一件事,心里的每一个记忆.急用..写一篇来 有关读后感的作文(600至700字)我星期五晚上要用 求有关善于发现或思考的作文素材当我们看见壶里的水沸腾时,首先想到的是把火关掉,把壶取下来;瓦特看见壶里的水开了,却探索其奥秘,发明了蒸汽机. 一个以尊严为题目的600字作文!要有说出何为尊严.我们为何要认识尊严!尊严的重要性 关于 建国60周年的历史论文 1000字谈一些这过去60年的历史,例如国家经历了一些什么困难,谈一谈经验,总结教训. 关于中秋节的作文 800字以上 急要初三水平的 800字以上啊 关于尊严的作文、、800字、、急啊、、、 求一篇读后感作文,700字的, 我的新发现 作文素材我要素材,最好是大都市的,春节期间的.3Q.过时不候! 我想长大或我不想长大的作文 600字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn