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

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

与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 “第五届中国云计算大会”将于2013年6月5-7日在京召开 Ridiculous Fishing:游戏遭遇山寨如何一雪前耻 老游戏的今天:Doodle Jump每周进账2万美元 剑指Evernote 谷歌正式推出Google Keep 开源的JS MVC框架 Backbone.js 1.0发布 前Facebook资深员工王淮给技术创业团队的十点建议 数据库面试题,大家看看(给分无商量) 存储过程问题拉!帮忙看看吧! 关于ExportMap输出图片的问题? Image控件的问题? sql server 连接 请问无组建上传的详细代码解释。 怪问题! 对文件操作总报I/O error 32,请教???? 网上邻居的问题。 有一个比较基础的问题想同大家共同探讨。 急需各位高手帮忙 数据库冷备份脚本 在网页里如何检测IP地址? 调用其它程序问题! 谁能给我一个进销存的库结构啊 ▲▲▲ 有个"矩阵加括号"的通用程序,如何把它改得更好!!! "link"是什么意思? VB控件的问题 到这里放松一下吧:) 水晶报表报登录失败有什么原因? windows advanced server 2000 的雙網卡問題? SQL SERVER 在ASP 中的分页技术 socket数据传输中网络断开,如何处理? <<黑客II>>人物分析搞怪版 简单问题请教!!急!! 请问MSSQLServer7可以直接通过COPY数据库达到备份的目的吗? 各位大鸟们:帮兄弟拿个主意? 怎样改变webform的caption阿 怎样在程序中实现关闭或开启触发器? 如何把CListCtrl的滚动条移到最底端? TPageControl怎么动态生成一个TabSheet? vb6的工具菜单下有一个添加控件集工具,可以添加按钮列表框,树状视图列表视图拆分条,移动钮列表框3种,请问还可以找到更多的控件集吗? 请问为何cup周围有两个电容鼓起来? 上传文件时,出现Access to the path "c:\inetpub\wwwroot\upload\abcrar" is denied. TPageControl怎么动态生成一个TabSheet? treeview控件,如何能删除被选的节点的相邻两层?? 图像缩略图的问题,在线等待,急,我就只剩这些分了,倾囊相送,不要嫌少,谢谢了 指针,变量声明的问题,急,在线等待 大家推荐一款路由器,采用后100分相送! 一个字符串问题 我在project里面加入lib文件后,连接时报“linker error:segment _text exceeds 64k”,该如何解决。 一个字符串问题 怎样在网页上使用activex控件 两个时间如何共享代码? 我有一个ITF图像文件,如何对它“去边”? 哪儿能买《美丽心灵》?vcd或DVD,或者免费下载? help~有人知道像联众那样的游戏大厅怎么做么? 在线求助:2000下打开网上的word文档出错 这里将成为php技术的基地,欢迎这来看看哟 还是想问:怎么得到当前用户的新邮件列表呢?很多人都遇到过,解决过吧 Linux 下开发 JSP 完善企业年金制度的措施 这个女女、长得还好额。 高中怎样的几个物体可以被当作系统来研究?是不是任何几个物体都可以被当作系统来研究?若不是则下面这个问题如何解决》?《 质量为M的气球下面吊着质量m的物体一速度V匀速上升,突然吊 什么东西要用二极管 ( )兵( )政 ( )思( )想 要填近义词哦!(前)思(后)想不可以( )兵( )政( )思( )想要填近义词哦!(前)思(后)想不可以 加速度不同的两个物体可以视为一个系统吗?应该如何分析 帮我看看这个类似二极管的东西是什么在一个整流电路中看到一个类似二极管的贴片器件,但是好像没有极性,接在变压器次级出来的两根线之间,然后这两根线再进入整流桥,这个芯片上面的字 防晒霜PA+++是不是比PA++好?SPF是不是越高越好? 若加速度不同的两个物体,视为一个系统,系统的加速度怎样求 这个工程由他来主持的“主持”的近义词是什么 填近义词 ( )兵( )将 ( )心( )气 哺乳动物为什么放弃了毒液?好像鸟类也没有自身分泌毒液的.是因为毒液的成本太高吗?以后出现的哺乳动物还会捡起毒液这个武器吗? 主持的近义词 卖弄的近义词是什么? 若1/(1-x方)=t,则1/(1+x方)用t可以表示为 LCD,LED分别是什么 什么事和为贵 t=x+1/x 怎么用t表示x?最好有具体的步骤 附和的近义词和反义词 物理防晒的产品有表明SPF,PA指数吗? 将t表示为x的函数是t=什么x还是x=什么t? 准确近义词是什么 炫耀的近义词是什么 第三小问,要过程,谢谢 准确的近义词正确~~~~~~ 哪种树是制作檀木的原材料. 孔子认为学习有哪三个层次?由此你受到哪些启示? 确确实实的近义词是什么 骂人山顶洞人是什么意思 青檀木怎样鉴别手链 已知集合M={(x,y)|x+y=1},N={(x,y)|x-y=1},则M交N= 物理看成一个物体如果叠放俩物体,接触面粗糙,放在光滑桌面上,它们俩已经共速,而下面的物体有8N的力,请问可以把他们看做一个物体不?为什么? 荀子是什么人? 几个LED并连,为什么有几个比较暗 物理什么时候能把连接在一起的物体看成整体? 什么是衡量女人的标准什么是衡量男人的标准有什么不同 M={(X,Y)|X+Y=2},N={(X,Y)|X-Y=4}那么集合M交N为多少 第三小问. 一组有6个同学,每一个同学与组内其他同学都握一次手,一共要握多少次手 考究的近义词急用! 求第三小问的过程. 两个人十四岁一条心,打一字呵 甲乙两个圆柱体容器,底面积比是4:3,甲容器内水深7cm,乙容器水深3cm.再往两个容器内各加入同样多的水,直到水深相等.这是水深()cm. 地下根与地下茎的区别有显微镜的情况下内皮层和维管束方面 联系实际,说说你对和为贵的体会 一定要简短! 我国目前的分配制度是什么?为什么采取这种方式? 一和为贵的近义词 “和为贵”的理解和体会 帮我做做题, 流仪是什么意思 大别山有哪些树种 我不会做题,错了吗为什么我不会做数学题,妈妈就骂我!我是不是做错了什么? ()是整个认识活动的起点单项选择A概念B感觉C知觉D判断 大别山地区种什么树回报相对较快? 老师要我们做题,1 一堆圆锥形黄土,体积是4立方米,底面积是2.5立方米,高是?(请把求这个的公式写下来!)2 一个圆锥形的体积是150立方厘米,高是45厘米,底面积是?(请把求这个的公式写下来! 如何理解 认识质是起点,认识量是深入? 古人“和为贵”的故事 用简单的语言叙述一个 虚度年华的近义词 什么是烂番茄新鲜度? 什么样的两个物体是同一系统内的物体?不同速度的物体可不可以看成同一系统内的物体? 外媒:中国人为何与读书渐行渐远?锦江区回应男孩坠楼事件 要求各学校加外媒:美国使馆搞监听激怒亚洲多国英报:高尔夫球场或成中共反腐“新阵地德内政部长称接受斯诺登帮助 但拒绝为美国国土安全部爆工资丑闻 1年多发8克里称NSA监控为“自动导航” 指责巴基斯坦塔利班首领被美击毙 巴和平进美83岁珠宝大盗涉嫌“重操旧业”被捕NSA被曝窃听国际货币基金组织和世界以色列空袭叙利亚 打击俄制导弹库阿根廷出新规应对外汇加速“失血”日本警察和站街女的战争【图】加拿大警方修复多伦多市长吸毒视频俄罗斯耄耋老汉赤手空拳勇战熊 被扔下卧底救妻后续:杭州警方客串“老娘舅”单位领导办公室抽烟怎么办?网友热议办伊拉克总理会晤奥巴马 望美售武对抗“文根英金范被曝恋爱一个月【组图】马尔代夫卫生部长联合国谋高就37个国家首脑确认出席在斯举行的英联紧急发出重磅消息 午后大盘或将这样走爹挫挫一个,娘矮矮一窝,宝宝身高的秘天才注定是抑郁症的宠儿吗?真正的友情,是独立人格之间的互相呼应苹果重蹈安卓覆辙 iOS更新停滞不前VoLTE来了 上海移动用户可畅享高巴塞罗那官网盛赞球队三门将拜仁慕尼黑新赛季主客场球衣谍照技术不够胶片凑:3款入门级负片胶卷点穷车富表?NO!NO!NO!屌丝也能节后资金回流,P2P网贷平台怎么做好当你亲喵星人的时候它们在想什么360智能摄像机体验 家中情况时刻掌杭州机场一航班因老鼠折返:会危及航空性感美女穿高跟鞋走钢丝15米 仅靠手菲律宾政府军与武装分子交战致45死1汤唯宣布怀孕:正在等调皮小猴子的到来可霸气可娇俏 张雨绮时装周亮相让人心东风西渐,是时候了!48小时的乌托邦和一群奇奇怪怪的人【385】积善之家:一个家族在中国8
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘