开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3231|回复: 14
打印 上一主题 下一主题
收起左侧

[易语言纯源码] 编写P2P程序的可靠UDP详细使用源码

[复制链接]
跳转到指定楼层
楼主
发表于 2022-3-28 02:42:10 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   广东省广州市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
UDPP可靠UDP传输,非常适合编写P2P应用
udpp0.13与接口例程.zip (73.97 KB, 下载次数: 72)
BUG反馈、对UDP可靠传输算法、P2P通信感兴趣的朋友可以一起探讨,
  
子程序名返回值类型公开备 注
_窗口_创建完毕  
窗口.标题 = 窗口.标题 + “ - SDK: ”UGetVersion ()
' 可以创建监听IPV4或者IPV6的套接字
集_ipv4套接字 = UCreate ( #AF_INET, “0.0.0.0”, 8815)
' 集_ipv6套接字 = UCreate (#AF_INET6, “::1”, 8815)
' 设置回调接口
USetCallback (到整数 (&回调子程序))
子程序名返回值类型公开备 注
回调子程序整数型 回调子程序参数结构不能改变
参数名类 型参考可空数组备 注
参_事件类型整数型
参_套接字整数型
参_连接序号整数型
参_数据指针整数型
参_数据长度整数型
变量名类 型静态数组备 注
局_addr文本型 
局_port整数型 
局_接收数据指针整数型 
' 注意:连接断开和连接失败事件下必须调用 UGetConnectINFO ,否则会出现内存泄露
判断 (参_事件类型 = #回调事件_建立连接 )
集_连接句柄 = 参_连接序号
局_addr = UGetConnectINFO (参_套接字, 参_连接序号, 参_事件类型, 局_port)
调试输出 (“新连接建立”, 参_套接字, 参_连接序号, 局_addr, 局_port)
如果真 (参_数据长度 > 0)
局_接收数据指针 = 申请内存 (参_数据长度, )
UGetDATA (局_接收数据指针, 参_数据指针, 参_数据长度, 1)
欲发送数据.加入文本 (“连接携带数据:”到文本 (_读字节集 (局_接收数据指针, 参_数据长度)) + #换行符 )
释放内存 (局_接收数据指针)
返回 (0)
判断 (参_事件类型 = #回调事件_连接断开 )
局_addr = UGetConnectINFO (参_套接字, 参_连接序号, 参_事件类型, 局_port)
调试输出 (“有连接断开”, 参_套接字, 参_连接序号, 局_addr, 局_port)
返回 (0)
判断 (参_事件类型 = #回调事件_连接失败 )
局_addr = UGetConnectINFO (参_套接字, 参_连接序号, 参_事件类型, 局_port)
调试输出 (“连接失败”, 参_套接字, 参_连接序号, 局_addr, 局_port)
返回 (0)
判断 (参_事件类型 = #回调事件_数据到达 )
局_接收数据指针 = 申请内存 (参_数据长度, )
UGetDATA (局_接收数据指针, 参_数据指针, 参_数据长度, 0)
调试输出 (到文本 (_读字节集 (局_接收数据指针, 参_数据长度)))
欲发送数据.加入文本 (“DATA到达回调长度:”到文本 (参_数据长度)#换行符 )
释放内存 (局_接收数据指针)
返回 (0)
判断 (参_事件类型 = #回调事件_发送成功 )
' 异步操作下,需要在回调里释放自己申请的内存
释放内存 (参_数据指针)
调试输出 (参_套接字, 参_连接序号, 参_数据指针, “发送成功”)
返回 (0)
判断 (参_事件类型 = #回调事件_发送失败 )
' 异步操作下,需要在回调里释放自己申请的内存
释放内存 (参_数据指针)
调试输出 (参_套接字, 参_连接序号, 参_数据指针, “发送失败”)
返回 (0)


返回 (0)
子程序名返回值类型公开备 注
_按钮_连接_被单击  
变量名类 型静态数组备 注
局_携带数据文本型 
局_数据指针整数型 
携带数据文本型 
' 写法1
局_携带数据 = 连接携带内容.内容
' 阻塞,等待连接返回,成功返回连接序列,失败返回0
集_连接句柄 = UConnect (集_ipv4套接字, 连接IP.内容, 到整数 (连接端口.内容), 0, 0, _取文本变量地址 (局_携带数据), 取文本长度 (局_携带数据), 1)
连接句柄.内容 = 到文本 (集_连接句柄)
返回 ()
' 或者自己申请内存存放携带数据
局_携带数据 = 连接携带内容.内容
局_数据指针 = 申请内存 (取文本长度 (局_携带数据), )
Memcpy (局_数据指针, 指针_取文本变量地址 (携带数据), 取文本长度 (携带数据))
' 非阻塞,直接返回0,并在回调里反馈连接结果
UConnect (集_ipv4套接字, 连接IP.内容, 到整数 (连接端口.内容), 0, 0, 局_数据指针, 取文本长度 (局_携带数据), 0)
释放内存 (局_数据指针)
子程序名返回值类型公开备 注
_按钮_断开连接_被单击  
' 断开已经建立的连接
UDisconnect (集_ipv4套接字, 集_连接句柄)
子程序名返回值类型公开备 注
_按钮_发送数据_被单击  
变量名类 型静态数组备 注
局_数据文本型 
局_反馈逻辑型 
局_数据指针整数型 
局_数据 = 取重复文本 (50, “1234567890qwertyuiop”)
局_数据指针 = 申请内存 (取文本长度 (局_数据), )
Memcpy (局_数据指针, 指针_取文本变量地址 (局_数据), 取文本长度 (局_数据))
' 异步非阻塞写法
' 非阻塞,直接返回真,并在回调里反馈发送结果
USend (集_ipv4套接字, 集_连接句柄, 局_数据指针, 取文本长度 (局_数据), 0, 0)
返回 ()
' 阻塞写法
' 阻塞,发送成功返回真,失败返回假
USend (集_ipv4套接字, 集_连接句柄, 局_数据指针, 取文本长度 (局_数据), 0, 1)
释放内存 (局_数据指针)
返回 ()
子程序名返回值类型公开备 注
_窗口_将被销毁  
UDestory (集_ipv4套接字)


i支持库列表   支持库注释   
spec特殊功能支持库



点评

真的很牛B,可惜用着太麻烦了   新疆维吾尔自治区乌鲁木齐市  发表于 2022-4-16 09:54

评分

参与人数 2好评 +1 精币 +2 收起 理由
faith0 + 1 这是调用dll,怎么放到源码区了。。。
遵纪守法 + 1 + 1 支持开源~!感谢分享

查看全部评分


14
发表于 2023-1-9 10:11:31 | 只看该作者   广东省广州市
6666666666666666666666666666
回复 支持 反对

使用道具 举报

13
发表于 2022-10-30 19:26:23 | 只看该作者   广东省江门市
7777777777777777777
回复 支持 反对

使用道具 举报

12
发表于 2022-10-23 21:00:57 | 只看该作者   福建省宁德市

学习学习
回复 支持 反对

使用道具 举报

签到天数: 2 天

11
发表于 2022-6-9 12:23:26 | 只看该作者   河北省石家庄市
可靠UDP
回复 支持 反对

使用道具 举报

签到天数: 2 天

10
发表于 2022-6-9 12:23:00 | 只看该作者   河北省石家庄市
学习学习
回复 支持 反对

使用道具 举报

结帖率:0% (0/7)

签到天数: 2 天

9
发表于 2022-6-2 10:54:20 | 只看该作者   浙江省宁波市
真是太麻烦了 你应该写一个模块 内存加载dll   然后功能可以直接和网络数据报一样  那样就能直接替代了
回复 支持 反对

使用道具 举报

8
发表于 2022-4-21 13:17:18 | 只看该作者   辽宁省沈阳市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:83% (25/30)

签到天数: 3 天

7
发表于 2022-3-29 15:44:23 | 只看该作者   湖南省怀化市
学习学习....
回复 支持 反对

使用道具 举报

签到天数: 23 天

6
发表于 2022-3-29 06:20:38 | 只看该作者   四川省成都市
瞅瞅看
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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