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

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

有关编程的12个猜想 【问底】王帅:深入PHP内核(二)——SAPI探究 【CTO俱乐部走进汽车之家】活动图文实录 只为逼格?超薄便携式无线充电设备Deuce 戴尔未来重心:云计算、大数据、移动互联与安全 【讲师】搜狐于顺治:Container在搜狐PaaS平台中的应用实践 【先锋】从代码层诊断,云端OneAPM平台让开发者专注开发 阿里将推无线领域重磅计划 阿里百川无线开放大会揭晓 提升网站转化率的四步优化方案 开发者应该了解的API技术清单! 【讲师】腾讯刘永峰:Docker时代,公有云面临的挑战和机遇 移动开发工具服务商Mob推出免费短信验证码SDK 遇见他们,MDCC 2014移动开发者大会嘉宾揭秘 揭秘全球最小无线耳机背后的技术 《最终幻想》之父访谈:我为何转战F2P游戏开发 寓教于乐 11款最适合教儿童编程的学习工具 苹果iPhone6获工信部许可 本月17日在内地发售 使用Redis之前5个必须了解的事情 妆媒体微信公众号背后的酸甜苦辣 TIOBE 2014年10月编程语言排行榜:Dart首次进入前20 Instagram工程师教你如何改善App的性能 利用Neo4j对电影评论进行深度学习情感分析 【简讯】SQLite 3.8.7来了 性能提升超50% 浏览器重定向性能分析经验谈 豆瓣工程副总裁段念:看板方法核心瞄准流程中的“流动性” 【图文实录】CTO俱乐部公开课:探讨如何成为技术团队管理者 资深产品交付咨询顾问何勉谈看板:“以价值拉动”解决敏捷困扰 开源HTML5游戏引擎Frozen背后的技术 MDCC 2014精彩日程、演讲嘉宾、参展开发团队全揭秘(图) Hi,约吗?2014华为开发者联盟沙龙(上海站)火热报名中! 找虐新方向!TinyScreen显示屏打造最小游戏机 超星图书阅览器注册问题?请人帮忙! 在日文做作系统中配置中文环境 我想扫描网络上发过来的所有IP包,想用RAW_SOCKET,那里可以找到这方面的文章? 请问如何实现窗口或者面扳的平滑移动,类似VS。NET中的效果 ACCESS的问题 能不能不工作找兼职或接项目,应该怎么找?有经验的请多多帮忙,重分相谢。 请关注!一个下拉菜单的显示问题! datastore 出错~~~ 请问如何在HtmlView中得到服务响应的head数据 如何不加载多文挡里的菜单 关联的两个下拉表单! 如何播放媒体文件,多多益善! 谁能给出c++下的STL中的"集合类"的定义使用啊? 奇怪的错误 能不能不工作找兼职或接项目,应该怎么找?有经验的请多多帮忙,重分相谢。 关于工作流的一些问题! 各位大侠帮忙! 如何判断tclientsocket连上服务端 VBScript如何将字符转换成Unicode编码? 能不能不工作找兼职或接项目,应该怎么找?有经验的请多多帮忙,重分相谢。 atom??? 关于类的继承中析构函数的调用问题! 请教一下,如何获得两个时间的时间差 请教OnMouseEnter和OnMouseLeave如何实现? 怎样用setTimeout定时关闭一个窗口后再打开另一个窗口?? execute immediate 语句问题 微软起家:关天store events,我在发件箱和已发件箱注册了OnSave事件,但发出去信件时根本就不触发事件!救命呀,我想跳楼!!! 我用几个按钮都可以调用一个窗体,但我想知道当这个窗体被调用时是哪个按钮使他被调用的? 高分求SOCK端口代理软件 一个简单的问题请指教 exit和return的区别是什么? 关于/t控制符 七张蝶的Visual Studio .NET 正式版的CD Key是什么 ——求教 如何让主窗口的toolbar显示在最下方。并加button在主窗口的右方 create table 时怎样设置number型字段默认值为0?? 请大家帮忙,找个C++编译器的下载地址 关于TImage的问题 怎么在sql语句中使用datediff? 能不能让radiobutton同时多选? 如何在服务器数据库数据变化时,在客户端实现同步刷新. 急:请问如何跨网段浏览Samba服务器?? 如何在服务器数据库数据变化时,在客户端实现同步刷新. 链接excel表的连接字符穿如何写 哪位有excel工作表的完整文件格式,请发至localvar@chinaren.com,谢谢 请问:在IE中用Applet时候支持的Java的包有那些,Javax.Swing是否支持,好像不行,那又如何解决?? 帮我看一段程序!为什么他不能提交到指定的asp网啊?在线等待!!!!! 如何在服务器数据库数据变化时,在客户端实现同步刷新. 给大家一个简单的算法测试,娱乐娱乐吧。 关于C语言加载时“文件太大”的问题 关于连接数据库的问题 电瓶的容量与电压有关系吗?我想买电动汽车,我看好了两种品牌,一是时风的,电瓶容量260ah,电压6v,一是陆骏的,电瓶容量140ah,电压12v,我应该从电瓶的角度看,我应该选哪一种电瓶,请老师们给个 小明身高1.76 m,站在平面镜前3m处,像与小明的距离是__m,如果小明向镜面前进1m,小明在镜中的像的长会______ 当阻力点到支点的距离大于力点到支点的距离时,杠杆省力还是不省力? 西红柿电池电压的大小和电池两极之间的距离的关系,和两级插入深度的关系 重100牛的水可以产生的最大浮力是多少?为什么 两个12V电瓶容量不一样可不可以并联使用? 杠杆省力与否与杠杆的三个点的位置有关,当用力点到支点的距离大于阻力点到支点的距离时是( );下面↓当用力点到支点的距离小于阻力点到支点的距离时是( ) 重100牛的水可以产生的最大浮力 用图中装置匀速提升重物为100N,手的拉力为60N,滑轮的机械效率为 高效测评 课课小考卷 七年级 数学【上】 人教版 答案我的答案弄丢了,老师说自己写完,然后对一下答案,但是我答案弄丢了,哪位好心人士来帮下我. 怎样才能洗掉衣服上的干涸的时间较长的血渍?还有油渍呢?或是和电池放久了弄上的电池里的油?都是时间较长的 不是新沾上的 当杠杆的力点距支点远,重点距支点近时,但( )距离. 数学课课大考卷七年级下答案 体重400N的小明亲手将100N重的物体搬到3m高的楼上,他对物体做的功是_______J,做功效率是________. 一个物体的重力为20N,体积为4立分米,浸没在水中,它受到的浮力为 没有的就别废话了 我觉得蛋白酶不能水解肽键,只能水解蛋白质使其成为多肽,但是看到很多不一样的回答,谁能给个肯定的回答呢? 甲,乙两个电阻分别标有“6欧姆,0.5A“”10欧姆,1A“,将他们并联起来,接在电路中,则电源点最大是干路中的电流为 北大绿卡课课大考卷数学七年级上人教版答案!(急!) 用力点距支点的距离等于阻力点距支点的距离,这种杠杆是【】 分析汽车电路故障并排除1、高压电路短路2、低压电路断路 加酶洗衣粉和酵素洗剂有什么区别? 生物:被蛋白酶水解是什么意思?详细! 外特性为U=(10-2I)V的关系,则外接电阻R=2欧姆后的电流为( ).(a)5A (b)2.5A (c)1A 一个弹簧下端挂重1N的钩码时,弹簧全长为11cm,挂重5N钩码时,全长为21cm,求弹簧不挂重物时的长度 蛋白酶为何能水解脂肪酶? 汽车电路断路 短路分别会损坏哪些部件?最好字数在300+ 本人要写一篇论文 凑点字数! 七年级下册数学新课堂AB卷(配青岛版)第十二章B卷答案 胰凝乳蛋白酶专一性水解什么氨基酸? 10欧姆,1.5A和15欧姆,1A 的俩电阻串联接入电路中,电路两端的电压不能超过__多少V?是串联的电路.说明理由 现等!新课堂AB卷,A卷 现等!把所有的分显出!我做鬼也不放过你! 蛋白酶可以水解所有的肽键对不对? 附图所示电路中,N为含有独立源的线性电阻电路.当开关S打开时,i1=1A,i2=5A,u=10V;当S闭合,R=6欧姆时i1=2A,i2=4A;当R=4欧姆时,R获得最大功率.求R为何值时i1=i2. 7、弹簧秤A和B及滑轮组均处于静止状态,F=10N,若不考虑秤重,滑轮重及摩擦,弹簧秤A和B的示数分别为 A.30N和 当杠杆的支力到力点的距离小于支点到重点的距离时------------.1.费力 2.省力 3.滑轮组 如图所示,不计摩擦和绳重,用100N的力拉着重250N的物体匀 速上升,物体上升的速度是0.3m/s,该滑轮组的如图所示,不计摩擦和绳重,用100N的力拉着重250N的物体匀 速上升2s,物体上升的速度是0.3m/s 弹簧秤A和B及滑轮组均处于静止状态,F=10N,若不考虑秤重,滑轮重及摩擦,弹簧秤A和B分别为图/> 当支点到力点的距离小于支点到力点的距离时,杠杆是( ) 某人用100N力拉250N的物体,摩擦力是多少? 如图,物体A重5牛,B重12牛,若滑轮重力和摩擦均不计,弹簧秤的示数为___牛.为什么是10牛,不是17牛呢? 当力点到支点的距离大于重点到支点的距离时是什么杠杆 不计摩擦和绳重,用如图所示滑轮组,拉着重 250N 的物体匀速上升 0.3m,每个滑轮重为50N,求:(1)绳自由端的拉力; (2)绳自由端上升的距离; (3)克服重力所做的功; (4)拉力所做的功.的第十题 为什么欧姆表测电阻时外电阻等于中值电阻时误差最小 若物重4N,重物上升了0.1m,弹簧秤示数2N,计算该滑轮组的机械效率 当支点到力点的距离等于支点到力点的距离时,杠杆是( ) 3000W家用太阳能发电系统,我需要准备多少光电池,或是多大的面积,或是多少瓦的光电池? 某人用一个距离手高3米的定滑轮拉住重100牛的物体,从滑轮正下方沿水平方向移动4米,若不计绳重和摩擦他至少做了多少功?没有关于角度的问题吗? 重100牛的水产生的浮力为什么可以大于 100牛 两组电池并联放电,可是放电电流不同?总放电电流750A,一组500A,一组250A,怎么会那样呢? 洗衣服的学问果汁和油污的实验结果还有油污,菜汁,果汁,血迹,蓝黑墨水的实验结果 蓄电池充电电流大小怎么控制15KW的28V直流发电机给4节12V110Ah的电池充电,电流会不会很大啊,15000/28=535A,这样是不是电流太大了,怎么办啊,电流大小到底由什么决定? 压缩机的PTC用消磁电阻可以代替吗? 洗衣服的学问墨汁、果汁、蔬菜汁、血迹用什么最好 在下看了一篇文章,里面提到,最大充电电流I=f(Q,T,SOC,SOH,HQ)Q,电池容量T温度SOC电池的电荷状态SOH电池的老化程度EQ电池的一致性求助,电池的最大充电电流如何确定?请高手给一个详解, 二端消磁电阻可代替三端消磁电阻吗 小明用一个距离手3m高的定滑轮拉住中小明同学用一个距离手3m高的定滑轮拉住重100N的物体,8s内从滑轮正下方沿水平方向移动4m,如图所示,若不计绳重和摩擦,他所做的功和功率分别是( ▲ )A 杠杆的支点到力点的距离( )支点到重物的距离,杠杆省力1、大于2、等于3、小于 蓄电池功率和容量和电压是什么关系,容量是总电量吗,那怎么不用w? 浮力 重100牛的水可以产生的最大浮力为()重100牛的水可以产生的最大浮力()A.一定小于100牛B.一定大于100牛C.一定等于100牛D、可以大于100牛答案是选D的,但我不知道为什么.老师要求订正 当支点到力点的距离小于支点到重点的距离时,杠杆是省力还是费力?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘