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

利用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”) 给 服 务 器, 表 明 自 己 要 退 出, 由 服 务 器 端 关 闭 连 接, 进 而 关 闭 自 身。

关于Waze的前世今生,你所不知道的事 代码审查——提高代码质量的终极武器 值得开发者关注的8个HTML5 API 最初设计方案大公开!LINE STAMP 贴图诞生记 安全宝联合华为成立抗D联盟 储备防御带宽达110G 专访中科院贾海鹏:给异构开发者的六个建议 我们死后的遗留数据将会如何处理? 传微软考虑重大重组 或势在必行 云适配CEO陈本峰:8年磨一剑 Splashtop企业应用:SplashApp让办公移动起来 时空旅行+内付费“植物大战僵尸2”下月18日全球同步发行! 中移动推网络电话Jego 后来者能否居上? 防止数据泄露:BYOD下的管理员5大妙招 咕咚副总裁司建铭谈移动时代的“软硬整合” 未来的物联网结点:可穿戴设备 应用开发的4个技巧,让程序能真正为用户使用 Google早期的10个API:它们现在在哪? 为啥微软开发产品总是慢半拍? Visual Studio 2013 Preview新功能预览 “中国手机游戏四月流水榜”出炉 超半数基于Cocos2d-x引擎 为移动而设计之信息架构篇 难逃厄运:Zynga将关闭Draw Something母公司OMGPOP 直接拿来用!最火的iOS开源项目(一) 是时候抛弃Eclipse转向IntelliJ了 Arrow:轻量级的Python时间日期库 编程语言API,你最青睐哪一款? 推动新输入方式发展:英特尔为感知计算设1亿美元基金 AWS到底有多大?目前看来有158000台服务器 C语言实现树的动态查找 第五届中国云计算大会于北京隆重举行 改变企业移动化:新Google地图API支持用户定制 java界面控制 求一用php实现压缩/解压缩的程序. 请问在WORD200中有什么好的方法在下划线中输入文字,而下划线不随字体而改动? Excel中保护工作表? 请问使用16倍速的刻录机能刻32倍速的盘吗 MYSQL如何实现自动删除数据库中的记录 紧急提问:CB中那些类用.操作符 请问一个概念的问题:??????????????????????? 如何生成报表文件啊? 装了oracle8i以后怎么登陆不了? 如何按照记录号转到指定的记录?不用SQL 用过magicskin的请进。 无法于数据库建立信任连接的问题_高分有送! 偶这个星期到深圳去,不知道在深圳有那些途径可以找到工作的? 手机掉到马桶里你会怎么办? 各位前辈帮忙看一下这个语句怎么解决(这是一个关于SQL语句的问题) 请教 java 命令的用法 用session跟踪用户的问题。 Xml中查找最大值! 请PHP高手推荐几本高阶的PHP书籍 偶这个星期到深圳去,不知道在深圳有那些途径可以找到工作的? Unicode问题 str:=#0+'9'+#0+'5'+#0+'8'+'~'+#207+'m'+'N' 在线等待。。 定位文件指针? 如何用ADO动态建SQL数据库 哪有 《Visual C++ 实践与提高——COM和COM+篇》下载 iis 为啥总出现 "the special module not found" 学习powerbuilder8.0 看哪些书比较好? 200相送,问题简单 一个使用用户空间控制流程的问题,望各位帮忙解答,小弟感谢不尽,在线等待 iis 为啥总出现 "the special module not found"(补充) 菜鸟问题---applet中的Runable方法, 紧急求助 装机:双敏的UKT400N主板性能怎么样?有啥缺点?适合超频吗? 请问vc编制数据库问题:如何读写binary字段 Chinajiji,看过来!多谢惠寄ISO/IEC 14882 请教各位高手用replace函数替换字符串时如何将颜色也变掉 SQL7.0备份的数据库如何在SQL2K中恢复? 如何改变编译出来的.exe文件的名称 谁有这样的矢量图设计系统例程可以参考参考? 谁有AVL树的代码呀。大家来讨论AVL树呀。呵呵 Maya 新手 哪位大侠能提供矢量图设计的例程! 请高人指点这个题目该怎么解决? 打包打包~~~~~什么是打包?? 多文件上传,一个很奇怪的现象! revalidate();怎样用? 怎樣得到系統的所有根目錄(如 C:,D:,E:),及根目錄下的所有子目錄. 求将excel文件导入notes数据库的方法(最好有例子),分不够可以再给! 小弟欲购编程器,各位大侠给点意见,大分相送,绝不亏待! 100分求教 如何访问远程数据库???? 荒漠中生活的骆驼刺,它的根扎的很深,这是对什么环境条件的适应( )我很急啊``````````````` 京瓷复印机8030这款机器怎么样? 在Rt△ABC中,∠C=90°,AC=5,BC=12,○O的半径为3(1)当圆心O与点C重合时,○O与AB的位置关系怎么样谢 用一根铁丝,可以围成一个边长为六分米的正方形,如果用这根铁丝围成一个长方形(长和宽都是整分米数),那么有多少种围法?每种违法的面积是多少 有时听到中东地区,亚太地区,这些地区是怎样划分的?地球上还划分有哪些地区?您有划分的图片吗? 三角形+三角形+三角形—圆形—圆形=75 圆形+圆形+圆形—三角形—三角形=5 三角形=?圆形=? 在干旱的沙漠中,骆驼刺地下的根比地上的茎长很多,造成这种现象的主要非生物因素是? 室温25度时,1千克水,水温从室温下降到0度,所需能量是多少?最好提供计算公式 在Rt△ABC中,∠C=90°,AC=5,BC=12,○O的半径为3(1)当圆心O与点C重合时,○O与AB的位置关系怎么样拜 工作中写请假条该怎么写? 建筑电气中NHW-4*150-CT/SC150 已知三角形与圆形的重合部分占三角形面积的5分之1,占圆面积的9分之2求三角形与圆的面积比.热求 快 在录制一段音频时,仅提高量化位数将怎么样在录制一段音频时,仅提高量化位数将( )(A)降低该音频的音质,减少存储容量(B)降低该音频的音量,对存储容量不产生影响(C)提升该音频 问一下建筑电气设计中ZR-YJV-4*185+1*95-SC150-FC是什么意思啊?还有Vigi NSE 400N 4P/350 EL ,Vigi 500mA,0. My parents are b____English teachers 乐在其中 作文 600字以上 一个球场长50米,宽20米.把它画比例尺是1:500的图纸上,长和宽应该画多长? 翻译 地震使整个城市成为一片废墟.(用in ruin) 关于音频保真度与量化位数的问题某用户要录制一段音频,采用下列采样频率和量化位数,能使该音频保真度最高的是(A)44.1kHz,8bit (B)44.1kHz,16bit(C)44.1kHz,24bit (D)44.1kHz,32bit求详解.知道 一个球场长50米,宽20米,把它画在比例尺是1/500的图纸上,长和宽各画多长? 英语翻译十万火急!一小时内... 音频中的量化比特数的含义视频中的量化比特数是决定每个像素颜色的种类但是音频中音色是由频率决定的啊?那量化比特数决定什么? 以《我乐在其中》为题写600字的作文!(最好写关于过年的) 辛亥革命征文比赛 800字 乐在其中作文600字 二次函数配方y=-x2+x+1如何配方? “几乎一片废墟”用英语怎么说? 请假条回家本人请假回家几天写仿请假条 BLOOD-C文人为什么要和小夜打赌 玉树地震发生后,许多人被困在废墟下面.翻译成英语怎么说. 想回家请假条怎么写 运动会加油词咋写 ? 自己丰富才能感知世界的丰富,自己善良才能感知世界的美好,自己坦荡才能逍遥地生活 请假条的写法奶奶去世 运动会的加油词怎么写 英语翻译谢谢聪明的人帮我翻译下,不要啰嗦的, 延字共有几画,第四笔是什么,用音序查字法先查什么 关于勤奋的话题作文 【歪批译吧】自己丰富才能感知世界的丰富英文 “戈”下面一个“鸟”怎么念? 哪个洲的国家最多,哪个洲国家最少,哪个州没有国家 通过函数提取将学号转变为班级学号的3、4位代表班级,01代表1班,02代表2班,03代表3班,怎么用函数来提取并转换成文字呢? 不计热量损失,将80千克的水从30度加热至90度,需要多少度电?为什么加热到60度和90度的水用的电一样? 在100件产品中,有98件合格品,2件次品,从这100件产品中任意抽取3件,恰好有1件是次品的抽法有多少种?要求有过程.快! 林老师骑自行车从甲地到乙地,第一小时行了全程的3分之1,第二小时行了全程4分之1这时离哋还有20km甲、乙两地相距多少千米? 中东是属于哪个州的啊? 在100件产品中,有98件合格品,2件次品,从这100件产品中任意抽取3件恰好有1件是次品的抽法有多少种 8、某班48位同学参加一次跳绳测验,在规定时间里,最多的跳了175次,最少的跳了160次.那么,在该班中至少 二次函数怎么配方 东周的都城是? 在“情系玉树”的捐款活动中,五年级同学平均每位捐款12.5元,五年级有5个班,每班有48位同学. 养龟所必备的仪器,什么加温棒什么的? 初三几何圆与三角形AD是ΔABC的角平分线,以D为圆心,AD为半径作⊙D交AB于E,交AC于F,AD=AE=2,BE=1,求AC的长 “大街小巷有大量的垃圾,严重破坏了城市的美貌”用英语怎么说? 加热棒100W一个小时耗电是多少度或者是一天耗电多少度 问三角形是多少,圆形是多少 英语翻译有一个城市发生了地震 这句话用英语怎么说?最好用上happen 女同学的力气比男同学小,用数学上可能性的观点回答:是一定还是可能 三角形的个数是圆形的4分之5三角行有多少个? 地震切断了这个城市与外界的联系用英语怎么表达? 斯诺登抨击美国国家安全局为“最坏犯罪“头文字T”东风日产“天籁弯”第二季埃及前总统穆尔西即将受审 罪名成立或外媒借三中全会关注中国改革 称将决定日本“抗华公关”紧忙活韩日抱怨“遭中国雾霾入侵”罗姆尼:奥巴马医保网站问题频出 有损浙江萧山冤错命案一审审判长辞去法院院朝鲜平壤国家杂技团“空中飞人”摘吴桥英媒称欧洲五国情报机构合作搞监听洛杉矶机场枪击案致航班受阻 华人伸援印尼黑客袭击澳大利亚200多家网站 玻利维亚北部发生坠机事故 已致8人死日本防卫省对大规模军演限制报道让日媒德国海关在一公寓中查获逾1500幅绘刚果(金)反政府武装陷入绝境 要求立伊拉克总理访美寻求武器技术支持 防内日本企业为免无期限雇佣临时工 设定合孙杨谎称驾照未带被识破?律师:若属实东方卫视知名主持人朱桢离婚 前妻炫富埃及前总统穆尔西到达受审地点 将接受1976年的书房图文:看看全省单科状元的“学习经”图文:她承诺应对脱欧后的挑战外交部:再次证明南海仲裁无效图文:“饿了么”店家上门砍伤给差评用将骗子公司拉进黑名单国资委:国企改革试点全面铺开楚天都市报讯 热点热议工商曝光今年十大违法广告案图文:27岁麻城小伙成上市公司董事长高校收费项目须提前公示半个世纪钻研良方 辨证取穴保证疗效雨规划34亿人的新城不仅是笑话图文:贫寒姐妹花同报护理专业济南R2线变长!从全部走地下变成上天热身赛-帕拉西奥进球17岁小妖失点 里约又出幺蛾子 奥运村边麻风病人聚集阿根廷男足奥运名单:马竞主帅之子在列巴西男足奥运大名单:内马尔领衔 国安图文:科比·布莱恩特“转会”饿了么 专项行动保安全
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘