it计算机]基于socket的局域网聊天室系统内容摘要:
主要组 件名 称 及 用 途 如下: TeditedConnectionPort 选择输入本机的端口号 edConnectionService 选择输入本机的名称 edConnectionAddress 选择输入本机的 IP 地址 edConnectionHost 选择输入本机名 edScreenName 输入用户的昵称 edPassword 输入密码 FontSize 用户自定义字体的大小 TLabelLabel2 提示用户输入密码 Label6 提示用户输入昵称 Label4 提示用户输入聊天内容 Label5 提示用户可以自定义字体 Label7 提示用户可以自 定义字体的大小 Label8 提示用户可以自定义背景颜色 TRadioButtonrbtnConnectionPort 提示用户选择输入本机的端口号 rbtnConnectionService 提示用户选择输入本机的名称 rbtnConnectionAddress 提示用户选择输入本机的 IP 地址 rbtnConnectionHost 提示用户选择输入本机的主机名 rbtnClientNonBlocking 提示用户选择非阻塞方式 rbtnClientThreadBlocking提示用户选择阻塞方式 第 9页 共 30页 9 TButton btnClientOpen 连接服务器按钮 btnClientClose 断开连接按钮 btnClearClientSocketLog 清除日志 btnSend 发送信息按钮 TListBoxlstClientActivity 显示用户活动 lbUsers 显示用户名单 TRichEditredReceive 显示聊天内容 TCheckBoxcbAutoRefreshUserlist 自动刷新用户名单 TComboBoxfontname 用户自定义字体的类型 TUpdownUpdown1 用户自定义字体的大小 TColorBoxColorbox1 用户自定义字体的颜色 Colorbox2 用户自定义 redReceive 的背景颜色 TTcpClientTcpClient1 向服务器提出连接请求 TPageControlpcLearnSockets 分页显示登录聊天界面 重要组件 TTcpClient 的使用 ( 1)在应用程序的 FormClientMain 中放入 TTcpClient 控件。 ( 2)设定 TTcpClient 的一些属性:先设定 NAME 属性,以便在程序中访问本控件。 设定BlockMode 为 bmBlocking。 把 Active 属性设为 False。 ( 3)在要与服务器建立连接之前,让用户输入或者选择主机名或主机 IP 地址。 ( 4)设置属性 Active 的值为 True,或只调用方法 Open 来建立与服务器的连接。 ( 5)如果收到 onError 事件通知,并且 ErrorEvent 是 eeConnect 的话,说明连接出错,可能是服务器未打开,或是服务器程序未运行等原因。 可以让用户 选择重新连接或者进行其它处理。 ( 6)如果收到 OnConnect 事件通知,说明已经连接已经成功建立,此时可以开始与服务器交换数据,接受服务器提供的服务。 ( 7)要求的服务完成之后,可以设定属性 Active 的值为 False,或者调用方法 Close 终止网络连接。 ( 8)可以在 OnDisconnect 事件处理例程中加入对网络连接断开后的必要的处理。 ( 9)在交换数据的过程中,如果收到 onError 事件通知,应该进行处理,对于严重的网络错误,应该关闭网络连接。 注册模块窗体设计 创建应用程序 建立一个新的 Application,修改 Form1 的名字为 Formregister, Caption 属性为 ―注册 ‖。 添加所需要的组件,使用了 2 个 TButton 组件, 3 个 TEdit 组件, 3 个 TLable 组件。 注册模块实现 当客户端发送注册用户的昵称和密码到服务器时,在服务器端匹配后检测用户注册的昵称是否在数据库中已经有人注册了。 在 chatclient 数据库表 中昵称是关键值,是唯一的,不能重名。 如果有重名,服务器端会向客户端发送提示信息,客户端接收后要换昵称重新注册。 登录模块实现 ( 1)在用户登录模块,用户必须正确填写正确的本机地址、端口号和昵称等内容,才能给予登录。 如果所填信息有错误,会提示填写正确信息。 第 10页 共 30页 10 procedure (Sender: TObject)。 //用户单击 ―连接 ‖按钮 begin if then。 if (=’’) and (=’’) then begin MessageBox(,’ 请输入服务器的正确端口号或服务 .’,’信息 ’,MB_OK)。 Exit。 end。 if (=’’) and (=’’) then begin MessageBox(,’请输入服务器的正确 IP 地址或名称 .’,’信息 ’,MB_OK)。 Exit。 end。 ( 2)在这里加了一段代码以显示主机名和主机的 IP 地址: procedure (Sender: TObject)。 var tp:ttcpclient。 strname,straddr:string。 I:Integer。 begin counter:=0。 tp:=(self)。 strname:=。 straddr:=。 :=’聊天室客户端 ’+’ 您的主机名 :’+strname+’ IP:’+straddr。 for i := 0 to do ([i])。 end。 用户在执行连接和断开任务时,在登录界面的右侧有个用户活动记录栏,记录了所有信息。 如果信息已经满屏,可以点击清除日志按钮来清除日志。 主聊天模块实现 与大多数聊天模块类似 ,我把主聊天模块分成三大块 :显示区、用户发言区 、用户列表区。 用户发言区 专门用来处理用户所输入的发言等。 可以对发言的字体大小和颜色进行更改。 对于用户对象的选取,用户只需在用户列表中选取你要发言的对象即可,用户发言后直接点击发送按钮。 procedure (Sender: TObject)。 //当聊天信息输入框接受用户输入时 ,按发送 var m:tmblock。 WriteText:string。 Receivers:TStringList。 I:Integer。 begin if(upperCase(Copy (,1,6))=’SNAME=’) then //如果是更变昵称命令 begin WriteText:=。 第 11页 共 30页 11 :=Copy(,7,Length()6)。 end else if (Copy(,1,1)=’’) then WriteText:=’’ else if (Copy(,1,1)=’?’) then WriteText:=’?’ Else //表明信息类型为一般聊天消息 begin //将其转变为 发送者 接收者 信息 格式 Receivers:=。 for I:=0 to do begin if [I] then ([I])。 end。 WriteText:=’’++’’+’’++’’+’’+t+1310’’。 :=+’对 ’++’说: ’+。 end。 显示区 用户显示页面专门用来显示聊天内容,也可以对其改变背景颜色。 用户列表区 procedure (Sender: TObject。 Socket: TCustomWinSocket)。 //当从服务器端收到信息 type PrevUser=record User:string。 Selected:Boolean。 end。 PrevUserList=array of PrevUser。 var ReadText:string。 Temp:PrevUserList。 I,J:Integer。 begin ReadText:=。 (’Client:Read’+FormatDateTime(StatusDateTimeFormat,Now))。 if (Copy(ReadText,1,1)=’’) then //表明服务器端送来的是用户的名单 begin SetLength(Temp,)。 for I:=0 to do begin Temp[I].User:=[I]。 Temp[I].Selected:=[I]。 end。 这样用户名就显示在列表中 ,并且当用户点击时能使该用户名成为发言的对象。 第 4 章 客户端系统的运行和软件测试 第 12页 共 30页 12 客户端登录模块的运行 点击 Unit_Client_Main 应 用程序,进入客户端,等待服务器连接(服务器端已经运行成功),然后注册。 正 确 填 入 端口 号 和 IP 地 址, 请 求 连接。 然 后填 写 昵称 和 密 码登 录 聊天室。 聊天模块运行结果 这样就可以进入聊天室,可以进行聊天了。 软件功能测试 我们考虑从以下几个方面来考量其可靠性,可用性及容错性。 可靠性 考虑到具体所使用的网络性能有所不同,为了考察此软件在恶劣的网络环境下使用的性能。 我们使用压力测试 工具 web spress在本机来模拟一个真实的网络情况,在 web spress中开启那些使用 socket 通信的应用,如 FTP,POP3,HTTP 等,可以观察到,随着压力的加大,网络负荷的加重,我们的软件发送和接受信息的速度并没有受到明显的影响。 可用性 考虑到不同的客户机和服务器平台所提供的计算能力不同,相应地,我们的软件在不同的硬件平台上的表现也可能随之出现差异。 我们在测试中人为地制造测试平台工作在处理器、存储器和 IO工作在重负荷下的情况,分别采用程序编译、拷贝大尺寸的文件等方法造成 CPU,内存,磁盘等设备的资源紧张。 从测试中我们观察到,虽然软件的响应时间有所增加,但从总体上来看,软件性能的下降曲线较系统可用资源的下降曲线平缓。 容错性 为了验证软件的容错性能,我们让一位从未使用过此软件的用户来对此软件进行操作测试,在使用过程中,用户的所有错误操作均被软件所截获,并发出错误信息,提醒用户改正。 可以说,软件具备了一定的容错性能。 测试结论与评价 第 13页 共 30页 13 至此,一个基于 TCP/IP 协议的聊天室就完成了。 在局域网内运行该程序并进行设置,即可自由的聊天了。 结 束 语: 在用 Delphi 制作基于 Socket的局域网聊天室时,我们一般不需要直接进行套。it计算机]基于socket的局域网聊天室系统
相关推荐
自然的设计效果。 Lightscape 是目前世界上唯一同时拥有光影跟踪技术,光能传递技术和全息渲染技术的渲染软件。 三大专有技术相辅相成,使其产生 效果的精确、真实、美观程度是目前世界上没有任何软件可与之比美的。 与其它渲染技术相比, Lightscape 的优势主要在于光线,交互性,逐步优化等方面。 Lightscape 是目前世界上首次合并光影跟和光能传递技术来捕捉全范围的光照效果
ables 添加、删除、替换和插入规则,并可以实现基于状态检测防火墙的规则。 系统设计模式 本系统采用 B/S 开发模式,即浏览器 /服务器模式。 这种模式可以节约客户端资源,客户端在不用安装任何软件的 条件下即可使用该系统。 该系统由以下四大部分组成: Iptables 配置主页, Iptabels 各功能界面,客户端表单验证,Iptabels 相关文件及操作。 第 5 页 共 22 页 图
稿拷貝之圖面,記錄於內網後分發至相關單位並簽收 . 圖面分發范圍:必要時由研發人員在內網上注明 回收及銷毀: 參考圖面:當作業結束后,由文管中心將參考圖收回銷毀,相關部門在內網上簽收。 正式圖面: 當原圖修改或作廢后,相應之舊版正式圖面由文管中心收回銷毀,並在內網上簽收,回收之原圖面保存 . 換發 /補發圖面: 圖面遺失、污損、模糊不清時,申請單位依舊圖或 圖面目錄 ,填寫 圖面 申請單
者客户团体所使用。 基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。 ( 3)采用标识简化页面开发 Web 页面开发人员不会都是熟悉脚本语言的编程人 员。 JavaServer Page 技术封装了许多功能,这些功能是在易用的、与 JSP 相关的 XML 标识中进行动态内大连东软信息技术职业 学院毕业设计 (论文 ) 第 2章 关键技术介绍 4
作提出改进建议。 第二章 洗衣机控制板的模糊控制理论 5 第二章 洗衣机控制板的模糊控制 理论 概论 模糊逻辑 是 FuzzyL ogic 的中文译意,它有别于传统逻辑和数理逻辑。 传统逻辑和数理逻辑一般用于解决精确问题,但对于很多实际问题 (如语言学,心理学,社会科学等 )它们则显得“力不从心”,模糊逻辑却适于这些问题的求解。 模糊逻辑通过隶属函数恰当地描述事物的模糊性
摇篮,其每年研究费超过 20亿美元,占朗讯科技年总收入近 11%,实验室的 Ramp。 D研究与开发人员超过 24,000 人,共同努力, 使其在通信领域的科研与开发一直处于世界领先的地位。 贝尔实验室并在世界 14 个国家设有分部。 在 1997 年,朗讯科技和贝尔实验室 (Bell Labs)分别在北京和上海设立了分支机构。 此外,贝尔实验室与上海交通大学的通信与网络联合实验室亦刚刚成立