posted @   Rkey  阅读(6)  评论(0编辑  收藏  举报

内网聊天-初级程序-极语言教程

//窗体代码:

复制代码
整数 窗体,聊天框,成员,发送框,发送按钮;
程序资源 24,"清单.xml";
程序段 加载窗体
整数 左=(桌面.宽-536)>>1,上=(桌面.高-453)>>1;
窗体=创建窗口($100,程序.名称,"局域网聊天",$10C80000,左,上,536,453,0,0,0,0);
聊天框=创建窗口($200,"Edit","欢迎光临",$50210004,0,0,527,387,窗体,1,4,0);
成员=创建窗口($0,"Combobox","全体成员",$52210043,0,393,113,153,窗体,2,8,0);
发送框=创建窗口($200,"Edit","你好",$50010000,120,393,347,27,窗体,3,4,0);
发送按钮=创建窗口($0,"Button","发送",$50010001,473,393,53,27,窗体,4,3,0);
窗体启动;读取消息
结束
复制代码

 

//程序代码:

复制代码
整数 长度=1,内网,接入= -1,选择,名字,信息;地址类 IP(协议=2);
小程序 窗体消息(整数 句柄,整数 消息,整数 参数,整数 数据);
    判断(消息)为 窗口关闭{退出程序();}
    为 单击左键{左键点击(参数);}
    为 $401{网络消息();}
    否则{处理窗口(句柄,消息,参数,数据);}
结束

小程序 退出程序
    如果(信息框(0,"确定要退出吗?","提示",$24)=选了是){名字(0)=35;发消息(名字,-1);网络终止;停止(0);}
结束

小程序 窗体启动
    名字=申请内存(1024);信息=?+24;
    网络启动($202,名字);内网 = 分配(网络型,数据报,报协议); 
    如果 (内网 = -1){信息框(0,"创建socket失败","错误",$20);}
    否则{取主机名(名字+1,22);名字(0)=33;
    设置接口(内网, 65535, $20, @长度, 2);
    异步通知(内网,窗体, $401, 接口读);
    IP.端口 = 反转(1280);
    长度=绑定(内网,IP,16);
    如果 (长度 = -1){信息框(0,"绑定端口失败","错误",$20);}
    否则{添加成员("大家",-1);长度=strlen(名字);
    发送消息(成员,选组合项,0,0);
    发消息(名字,-1);}
    }读取消息
结束

小程序 左键点击(整数 参数);
    判断(参数)
    为 4{长度=发送消息(发送框,获取文本,1000,信息+1);长度++;
    改窗口字(发送框,0);信息(0)=32;发消息(信息, 接入);}
    为 10002{长度=发送消息(成员,取组合项,0,0);接入=发送消息(成员,组合数据,长度,0);}
结束

小程序 发消息(整数 内容,整数 adr);
    IP.地址 = adr;
    长度=发到(内网,内容,长度,0,IP,16);
结束

小程序 网络消息
    长度=16;
    长度=收取(内网,信息,1000,0,IP,@长度);
    信息(长度)=0;显示消息("\r\n");判断(信息(0))
    为 32{显示消息(信息);显示消息(" @");
    长度=查找成员(IP.地址);
    发送消息(成员,组合读取,长度,信息);
    显示消息(信息);}
    为 33{显示消息("大家好");
    显示消息(信息);显示消息(" 冒泡了^_^");
    如果(英文比较(名字,信息)){
    发消息(名字,IP.地址);}
    添加成员(信息+1,IP.地址);}
    为 35{删除成员(IP.地址);}
结束

小程序 查找成员(整数 编号);
    整数 id;长度=发送消息(成员,组合总项,0,0);
    循环于(id=0;id<长度;id++){
    如果(发送消息(成员,组合数据,id,0) = 编号){返回(id);}}返回(-1);
结束

小程序 显示消息(整数 内容);
    设置焦点(聊天框);
    发送消息(聊天框,编辑选中,-2,-1);
    发送消息(聊天框,编辑替换,0,内容);
结束

小程序 添加成员(整数 名称,整数 编号)
    如果(查找成员(编号)=-1){发送消息(成员,组合添加,0,名称);
    发送消息(成员,组合附加,长度,编号);}
结束

小程序 删除成员(整数 编号);
    编号=查找成员(编号)如果(编号>=0)
    发送消息(成员,组合删除,编号,0)
结束;
复制代码

 

posted @   Rkey  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示