发布一个C++跨平台事件驱动型网络框架EasyNet

本文介绍了C++的EasyNet框架,它是一个基于Muduo改造的跨平台、事件驱动型网络框架,支持Windows、Linux、VxWorks等操作系统。相比Muduo,EasyNet改进了定时器设计,新增了行级Codec编解码,并实现了RPC功能。未来计划包括优化IO复用、增加对更多操作系统的支持和UDP协议的支持。
摘要由CSDN通过智能技术生成

发布一个C++跨平台事件驱动型网络框架EasyNet,github地址链接是EasyNet,代码总行数不到一万行,其中还包括了protobuf自动生成的一些代码

EasyNet是基于Muduo改造过来的,Muduo是一个基于C++开发的Linux服务端高性能、事件驱动型的网络框架,类似于Java中的Netty,python中的Twisted.但是Muduo仅支持Linux

EasyNet现支持的平台 Windows、Linux、Vxworks多种常用的操作系统,稍加改动就可以支持Macos,android等操作系统

EasyNet相对于Muduo的几点区别

  • 定时器的设计,Muduo使用了Linux独有的Timerfd实现的高性能定时器,Windows等其他平台并没有相应的api,故EasyNet使用了最小堆
    实现的,最小堆的顶点是所有定时器中最先超时的,所以每次只用检查最小堆顶点的定时器事件

  • EasyNet在Muduo的ProtobufCodec和FieldLength编解码的基础上新增加了基于行的Codec编解码方式,有很多时候需要我们需要每次解析一行数据

  • EasyNet同时支持boost和C+

### 回答1: 易语言是一种脚本语言,它可以用来帮助你快速开发 Windows 平台下的程序。你可以使用易语言来开发一个能够在两台电脑之间传输图片的程序。 以下是一个简单的程序,它使用易语言的网络功能来在两台电脑之间传输图片。程序中使用了一个叫做 "UDPSend" 的函数来发送图片,使用了一个叫做 "UDPReceive" 的函数来接收图片。这两个函数是易语言的内置函数,可以直接使用。 ``` #include <EasyNet.ec> #include <EasyStr.ec> // 图片文件名 StrImgFileName = "image.jpg" // 发送图片 Procedure UDPSend(StrIP, StrPort, StrImgFileName) // 创建一个 UDP 套接字 Socket = UDPCreate(0) // 读取图片文件 FileRead, FileHandle, StrImgFileName FileSeek, FileHandle, 0, 2 FileSize = FileTell(FileHandle) FileSeek, FileHandle, 0, 0 FileRead, FileHandle, FileData, FileSize FileClose, FileHandle // 发送图片数据 UDPSend, Socket, StrIP, StrPort, FileData UDPClose, Socket EndProcedure // 接收图片 Procedure UDPReceive(StrImgFileName) // 创建一个 UDP 套接字 Socket = UDPCreate(0) // 接收图片数据 UDPReceive, Socket, StrIP, StrPort, FileData UDPClose, Socket // 保存图片文件 FileCreate, FileHandle, StrImgFileName FileWrite, FileHandle, FileData FileClose, FileHandle EndProcedure // 主函数 Procedure Main() // 发送图片 UDPSend("192.168.1.100", "10000", StrImgFileName) // ### 回答2: 易语言是一种基于VB语言的编程语言,可以用来开发简单的应用程序。因此,我将为你提供一个基于易语言的程序示例,用于在两台电脑间传输图片。下面是程序的源码: ```easy语言 '说明:在两台电脑间传输图片的程序 '作者:AI助手 '--------发送方程序--------- '发送方程序将源图片分为若干个数据包,逐个发送给接收方 '打开发送方程序 Open "sender.txt" For Output As #1 '选择待发送的图片 file = OpenFileDialog() '将图片数据读入到字节数组中 Dim bytes() As Byte = FileRead(file) '循环发送每个数据包 For i = 0 To UBound(bytes) Step 1024 '每个数据包的大小设置为1024字节 dataPackage = Mid(bytes, i + 1, 1024) '提取数据包 Print #1, dataPackage '将数据包写入到sender.txt文件中 Next '发送完成后关闭程序 Close #1 '--------接收方程序--------- '接收方程序从发送方接收数据包,并将数据包组合成完整的图片 '打开接收方程序 Open "receiver.txt" For Input As #2 '接收数据包 Dim imgData As String Do Until EOF(2) Line Input #2, dataPackage '从receiver.txt文件中读取数据包 imgData = imgData + dataPackage '组合数据包 Loop '保存接收到的图片 SaveFileDialog("保存接收到的图片", "Image Files(*.jpg)|*.jpg", imgData) '接收完成后关闭程序 Close #2 ``` 请注意,以上代码仅提供了一个基本的框架,可能存在一些问题,如文件路径的获取、文件读写等。你可以根据具体的需求进行适当的修改和完善,以使该程序符合你的要求。希望对你有所帮助! ### 回答3: 易语言是一种用于编写Windows平台上的简单应用程序的编程语言,它可以帮助我们编写一个能在两台电脑间传输图片的程序。 下面是一个使用易语言编写的简单的图片传输程序的示例源码: ``` 模块设置 功能键盘菜单 不含DLL动态连接库 源码模式 图片传输程序 定义函数 主机选择() 文本框 1,30,30,250,20,主机IP地址 按钮 2,30,80,60,20,选择 事件 客户端选择,2,左键弹起 返回 定义函数 主机等待() 显示("等待连接中...") 等待连接(8888) 显示("已连接") 返回 定义函数 客户端选择() 文本框 3,30,30,250,20,主机IP地址 按钮 4,30,80,60,20,连接 事件 连接主机,4,左键弹起 返回 定义函数 连接主机() 显示("正在连接...") 连接(3,8888) 显示("已连接") 返回 定义函数 发送图片() 打开图片(0, "选择要发送的图片") 发送数据(0, 0) 发送数据(0, 文件长度(0)) 发送文件(0) 文件关闭(0) 返回 定义函数 接收图片() 创建文件目录("接收图片") 文件打开(1, "接收图片\\接收图片.jpg", 1) 接收数据(1, 0) 文件长度 = 接收数据(1) 接收文件(1, 文件长度) 文件关闭(1) 显示("图片接收完毕") 返回 界面 1 文本框 1,30,30,250,20,主机IP地址 按钮 2,30,80,60,20,选择 按钮 3,30,130,60,20,等待 按钮 4,30,180,60,20,连接 按钮 5,30,230,60,20,发送 按钮 6,150,230,60,20,接收 事件 主机选择,2,左键弹起 事件 主机等待,3,左键弹起 事件 客户端选择,4,左键弹起 事件 发送图片,5,左键弹起 事件 接收图片,6,左键弹起 如消息 = "已连接" 则 对象禁用(3) 对象禁用(4) 对象启用(5) 对象启用(6) 如消息 = "断开连接" 则 对象启用(3) 对象启用(4) 对象禁用(5) 对象禁用(6) 返回 ``` 以上就是一个使用易语言编写的简单的图片传输程序的源码。你可以使用易语言编译器将该源码编译成可执行文件,并在两台电脑间运行该程序进行图片传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值