书香雅阁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 725|回复: 0

【tcp—聊天工具的开发】

[复制链接]

384

主题

407

帖子

158万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1581367
发表于 2023-4-28 00:13:47|字数:2,153 | 显示全部楼层 |阅读模式
LV10 站长

前面我们已经学习了tcp的相关应用,024:【tcp—留言功能】,在前面的课程中并没有讲服务器如何给客户端发送数据


本节要来写一个聊天工具,相当于客服系统,由于考虑到代码难度,本节讲解的是单人的,也就是服务器系统只允许同时与一个人聊天

这也是我们的第2个课程设计,第一个是044:【店铺会员系统设计】

1.png
这是一个大概的效果图,接下里大家下载源码开始学习
客户端: 客户端.e (935.75 KB, 下载次数: 164)
服务器: 服务器.e (898.78 KB, 下载次数: 163)

客户端代码:

  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
逻辑值逻辑型  
逻辑值 = 客户1.连接 (“127.0.0.1”, 19730)
判断 (逻辑值 = )
_启动窗口.标题 = “连接成功”

_启动窗口.标题 = “连接失败,请重新连接”
子程序名返回值类型公开备 注
_客户1_连接断开  
_启动窗口.标题 = “连接失败,请重新连接”


窗口创建完毕就连接服务器,客户1组件和服务器断开连接了_启动窗口.标题有响应告知使用者
  
子程序名返回值类型公开备 注
_编辑框_收信框_鼠标右键被按下逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型   
纵向位置整数型   
功能键状态整数型   
弹出菜单 (功能, , )
子程序名返回值类型公开备 注
_连接_被选择  
变量名类 型静态数组备 注
逻辑值逻辑型  
逻辑值 = 客户1.连接 (“127.0.0.1”, 19730)
判断 (逻辑值 = )
_启动窗口.标题 = “连接成功”

_启动窗口.标题 = “连接失败,请重新打开软件”


这里绑定了一个菜单事件,可以重新发起连接
  
子程序名返回值类型公开备 注
_按钮_发送_被单击  
变量名类 型静态数组备 注
逻辑值逻辑型  
时间 = “(”时间_格式化EX (取现行时间 (), , , 3)“)”
逻辑值 = 客户1.发送数据 (编辑框_发信框.内容)
判断 (逻辑值 = )
编辑框_收信框.内容 = 编辑框_收信框.内容 + “自己” + 时间 + “:”#换行符 + 编辑框_发信框.内容 + #换行符#换行符



编辑框_收信框.内容 = 编辑框_收信框.内容 + “自己” + 时间 + “:”#换行符“发送失败”#换行符#换行符

子程序名返回值类型公开备 注
_客户1_数据到达  
变量名类 型静态数组备 注
数据文本型  
数据 = 到文本 (客户1.取回数据 ())
时间 = “(”时间_格式化EX (取现行时间 (), , , 3)“)”
编辑框_收信框.内容 = 编辑框_收信框.内容 + “服务器” + 时间 + “:”#换行符 + 数据 + #换行符#换行符


这个是发送和接收代码,所谓接收就是当服务器给客户端发送数据的时候,会触发_客户1_数据到达这个子程序

服务器端代码

  
子程序名返回值类型公开备 注
_服务器1_客户进入  
客户ip = 服务器1.取回客户 ()
_启动窗口.标题 = “服务器   连接客户:” + 客户ip


当客户连接进来的时候,取出连接客户的ip,格式为ip:端口,这个端口不是19730服务器设置的端口,是客户端设备上的端口,这个问题先不讨论

至于发送和接收代码,和客户端的发送接收差不多,没什么特别好讲的

重点:
我们消息记录的部分来源于2部分,一个是当我们按下发送按钮的时候,一个是接收到数据的时候

这就是需要聊天工具的底层框架了,在此基础上慢慢扩展出多人聊天,发送图片,群聊等功能




(点击返回课程目录https://shuxiangyage.net/forum.php?mod=viewthread&tid=1134
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|书香雅阁论坛 ( 湘ICP备17011672号-3 )

GMT+8, 2024-5-5 19:56 , Processed in 0.195656 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表