#ifndef UDPCOMMU_H #define UDPCOMMU_H #include #include #include using namespace std; #define MAX_RCV_SIZE 4096 typedef function &data)> UdpRecvHandler; class UdpCommu { public: UdpCommu(); public: /** * @brief bindTo 绑定到本地端口 * @param port 端口号 * @return 是否绑定成功 */ bool bindTo(int port); /** * @brief sentTo 往目标地址发送数据 * @param ip 目标ip * @param port 目标端口 * @param data 数据指针 * @param size 数据大小 * @return >=0发送成功的字节数,-1发送失败 */ int sentTo(const string &ip, int port, const void *data, int size); /** * @brief startAsyncRecv 开始异步接收数据 * @param handler 处理函数 * @return 是否启动成功 */ bool startAsyncRecv(UdpRecvHandler handler); /** * @brief close 关闭udp通信 */ void close(); /** * @brief getBoundMac 获取udp通信绑定的网卡 * @return 绑定的网卡地址 */ string getBoundMac(); public: /** * @brief getErrMsg 获取最近一次错误的错误信息 * @return 最近一次的错误信息 */ string getErrMsg(); private: void recvThread(); bool mAsyncMode=false; private: string mErrMsg=""; int mSocket=-1; UdpRecvHandler mRecvHandler=nullptr; }; #endif // UDPCOMMU_H