栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

单头文件UDP C++ 封装类

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单头文件UDP C++ 封装类

文章目录
  • 前言
  • 一、CPfUdp 是什么?
  • 二、UDP客户端使用
  • 三、UDP服务端使用步骤
    • 1.引入库
    • 2. 创建服务监听类
    • 2. 添加到服务器中并运行服务
  • 总结


前言

基于pfunix的UDP通信在linux作为在系统内部进程之间的一种通信方式非常常见,效果也很好。

本文介绍了一个对UDP的系统调用进行了封装的类(CPfUdp),可以简化UDP的访问,提升开发效率。

github: https://github.com/magiclake/hnet

一、CPfUdp 是什么?

PF_UNIX (也称作 PF_LOCAL ) 套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由 socketpair(2) 创建), 也可以与套接字类型文件相关联. Linux 还支持一种抽象名字空间, 它是独立于文件系统的.

有效的类型有: SOCK_STREAM 用于面向流的套接字, SOCK_DGRAM 用于面向数据报的套接字,其可以保存消息界限. Unix 套接字总是可靠的,而且不会重组数据报.

Unix 套接字支持把文件描述符或者进程的信用证明作为数据报的辅助数据传递给其它进程.

CPfUdp 是一个使得在Linux下使用PF_UNIX 进行udp通信的单头文件的封装类。

二、UDP客户端使用
#include "CPfUdp.hpp"
void main(){
	using namespace hnet;
	CUdpPfClient client(PF_PATH);
	UdpData data(sendData, sendData + strlen(sendData));
	
	if (!client.send(data))
	{
	    printf("CUdpPfClient:send data failn");
	}
	else
	{
	    printf("CUdpPfClient:send data %s OKn", &data[0]);
	}
	
	UdpData outData;
	if (!client.recv(outData))
	{
	    printf("CUdpPfClient:recv data failn");
	}
	else
	{
	    printf("CUdpPfClient:recv data %s OKn", &outData[0]);
	}
}
三、UDP服务端使用步骤 1.引入库
#include "CPfUdp.hpp"
2. 创建服务监听类
     class testServerEvent : public hnet::UdpServerEvent
     {

     public:
         virtual bool dataRxEvent(UdpData &data)
         {
             printf("testServerEvent:recv data:[%s],now echon", &data[0]);
             // use this funciont to send data back if u need
             return response(data);
         }
     };
2. 添加到服务器中并运行服务
		using namespace hnet;
        try
        {
            testServerEvent eventHandler;
            CUdpPFUnixServer server(PF_PATH, &eventHandler);
            printf("server startn");
            server.run_forever();
        }
        catch (const hnet::network_error &err)
        {
            printf("CUdpPfClient error:%sn", err.what());
        }

总结

以上就是今天分享的一个简单的基于C++的UDP封装类,可以简化linux系统上对UDP系统调用的访问。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号