Linux网络编程()sockaddr操作C++封装
2021/6/13 7:21:23
本文主要是介绍Linux网络编程()sockaddr操作C++封装,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
net/InetAddress.h
#ifndef _INET_ADDRESS_H_ #define _INET_ADDRESS_H_ #include <arpa/inet.h> #include <netinet/in.h> #include <sys/socket.h> #include <string> class Ipv4Address { public: Ipv4Address(); Ipv4Address(std::string ip, uint16_t port); void SetAddr(std::string ip, uint16_t port); std::string GetIp(); uint16_t GetPort(); struct sockaddr* GetAddr(); private: std::string ip_; uint16_t port_; struct sockaddr_in socket_addr_; };
#include "net/InetAddress.h" Ipv4Address::Ipv4Address() {} Ipv4Address::Ipv4Address(std::string ip, uint16_t port) : ip_(ip), port_(port) { socket_addr_.sin_family = AF_INET; socket_addr_.sin_addr.s_addr = inet_addr(ip.c_str()); socket_addr_.sin_port = htons(port); } void Ipv4Address::SetAddr(std::string ip, uint16_t port) { ip_ = ip; port_ = port; socket_addr_.sin_family = AF_INET; socket_addr_.sin_addr.s_addr = inet_addr(ip.c_str()); socket_addr_.sin_port = htons(port); } std::string Ipv4Address::GetIp() { return ip_; } uint16_t Ipv4Address::GetPort() { return port_; } struct sockaddr* Ipv4Address::GetAddr() { return (struct sockaddr*)&socket_addr_; }
测试代码:
#include "net/InetAddress.h" #include <iostream> int main() { Ipv4Address address("192.168.1.1",4096); std::cout << "ip = " << address.GetIp() << ",potr = " << address.GetPort() << std::endl; Ipv4Address address1; address1.SetAddr("192.168.1.1",4096); std::cout << "ip = " << address1.GetIp() << ",potr = " << address.GetPort() << std::endl; }
这篇关于Linux网络编程()sockaddr操作C++封装的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南
- 2024-07-29linux命令行下好用的性能监控工具atop
- 2024-07-04Linux系统上离线升级SSH服务的具体操作步骤-icode9专业技术文章分享
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念