基于tcp局域网聊天程序设计(delphi内容摘要:

ket 连接处得来的信息。 AsyncStyles 属性决定 windows handle 将接收哪种类型的信息。 当决定关闭监听连接时,调用 Close 方法。 这将关闭所有打开着的,连接到客户应用的连接,取消任何尚未同意的连接,接着关闭监听连接以便服务 socket 控件不在接受任何新的连接。 当客户端关闭他们自己独立的连接到的 server socket 的连接时,可以在 OnClientDisconnect 事件中得到讯息。 数据库设计 Delphi 中的 DataBase Desktop 数据库 允许用户创建、查看、排序、修改及查询一系列的 Paradox、 dBASE 及 SQL格式的数据表格,选用 Edit|Paste Link 可以用 DDE(动态数据交换 Dynamic Data Exchange)与在其它应用程序中的数据建立激活动连接。 利用 Delphi 的客户 /服务器功能,可以在本地数据库上或远程数据库服务器上开发客户 /服务器模式的应用程序。 Delphi 的一个强有力的功能之一是可以将基于本地桌面数据库系统的应用程序很容易地修改成客户 /服务器模式的应用。 一个 Delphi 数据库应用 程序访问的是本地数据库还是远程 SQL 数据库服务器上的数据库,这对于最终用户是完全透明的。 在本次课设中要记录那些注册了的人的信息,就要使用 Delphi 中的 DataBase Desktop 数据库来保存,要正确运行本次聊天程序,就需要建立 chat 的数据库别名指向 table 目录,可以使用 Database Desktop 建立别名。 服务器先运行,自动到监听模式,然后可以运行 N个客户端,这样就能进行聊天了。 第 三 章 系统 测试 调试 测试调试过程 8 测试 调试: 1.打开 Delphi7,在 form 里面添聊天程序所 需要的控件,对部分控件编程,完成聊天程序总体设计之后 ,按下 F9运行看看是否出错。 2.如果第一步骤出错,看看错误的外部表现,定位错位位置。 3.由第二步骤在来分析有关程序代码,找出错误的内在原因。 4.修改程序代码,排除这个错误。 5.重复进行暴露了这个错误的原始测试以及某些回归测试,以确保该错误确实被排除且没有引入新的错误。 6.如果所作的修正无效,则撤消这次改动,重复上述过程,直到找到一个有效的办法为止。 7.测试 调试完所有错误之后 ,点下 Run 看看设计的界面是否和要求一致,如果不一致就说程 序编译达不到要求,这就要重新修改程序直到达到要求为止。 调试中出现的问题 1.在客户端设计时 ,不知道怎么保留注册了的人的信息 ,经过查找资料 ,发现可以使用 Delphi 中自带的 DataBase Desktop数据库记录注册信息 ,这样问题就解决了。 2.在服务器端设计时,不知道怎么显示在线用户以及他们的个人信息,通过 socket打开监听 ,使它处在监听状态,这样就能显示在线用户。 3.数据库的设计部分的设计出现了很多的问题,如怎样记录信息,怎么样使聊天程序正常运行,以及怎么使服务器端的监听自动,经查阅 有关数据库方面的书和请教了老师最后这些问题一一解决了。 4.局域网聊天时,发送信息过去在对方那里需 10几秒之后才能显示出来,这个问题困扰了好几天,后面就简化界面,能不用的控件就不用,尽量简单,果然把这个问题解决了,现在局域网聊天时候,一发送完信息,在对方那立刻显示。 参考文献 [1] Marco 从入门到精通 [M].北京:电子工业出版社 ,2020 [2] 刘艺 .Delphi 面向对象编程 [M].北京:清华大学出版社 ,2020 9 [3] 黄超 . Delphi 网络应用开发技术与实例 [M].北京:清华大学出版社 ,2020 [4] 甘志 .DELPHI7 高级应用开发篇 [M].北京:清华大学出版社 ,2020 [5] 王沛 .Delphi7 编程入门 [M].北京:机械工业出版社 ,2020 附录 A: 聊天 客户端 程序代码如下: procedure (Sender: TObject)。 begin 10 :=。 //。 :=true。 :=false。 :=true。 :=true。 :=true。 end。 procedure (Sender: TObject。 Socket: TCustomWinSocket)。 begin :=39。 正在连接 ... 39。 +。 end。 procedure (Sender: TObject。 Socket: TCustomWinSocket)。 begin :=39。 连接到 39。 +。 end。 procedure (Sender: TObject)。 begin close。 end。 procedure (Sender: TObject)。 begin if then begin (usename+39。 *^amp。 %^)@39。 )。 :=false。 end。 :=39。 断开连接 39。 :=true。 :=true。 11 :=true。 :=true。 end。 procedure (Sender: TObject。 var Key: Char)。 begin if key=13 then if then。 end。 procedure (Sender: TObject)。 var chatname : string。 i : integer。 begin if =39。 39。 then begin showmessage(39。 发送消息不能为空。 39。 )。 exit。 end。 if =true then begin for i:=0 to do begin if [i] then begin chatname:= [i]。 (39。 你对 39。 +chatname+39。 悄悄说:39。 +)。 //。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。