代码严格遵循Google 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_;
};

InetAddress.cpp

#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;
}

sockaddr操作C++封装相关推荐

  1. Linux socket编程(一) 对套接字操作的封装

    转载:http://www.cnblogs.com/-Lei/archive/2012/09/04/2670942.html 以前写的,现在回顾一下: 下面是对socket操作的封装,因为在Linux ...

  2. 小博老师解析Java核心技术 ——JDBC数据库操作类封装

    2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...

  3. PHP中对数据库操作的封装

    在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...

  4. mysql函数封装_Mysql对文件操作的封装

    在查看Mysql对文件的操作中发现,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录操作函数使用了CreatFile.Clo ...

  5. php封装的数据库操作文件夹,PHP中对数据库操作的封装_php

    现在我们把其封装在dbfz.inc中,其设计如下: $#@60;? class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表mysql,当为 2 ...

  6. 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装

    快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...

  7. android 字符串数组去重,GitHub - deng-ming-hao/ec-do: 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等。...

    ec-do 自己封装的常用操作实例 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等. 使用方法 引入ec-do.js //去除空格 ecDo.trim(' ...

  8. java_web:使用javabean实现登录操作(封装业务逻辑的javabean,且使用封装数据的实体类传参)

    javabean的使用 1.将jsp中要用到的登录操作的代转移到java类中 2.javabean的作用: a.减轻jsp的复杂度 b.提高代码复用 3.javabean的定义 a.public修饰的 ...

  9. java_web:使用javabean实现登录操作(封装业务逻辑的javabean)

    javabean的使用 1.将jsp中要用到的登录操作的代转移到java类中 2.javabean的作用: a.减轻jsp的复杂度 b.提高代码复用 3.javabean的定义 a.public修饰的 ...

最新文章

  1. Java基础巩固——反射
  2. Matlab Simulink如何生成谐波
  3. 面向对象的C语言编程-DynamicLinkageGenericFunctions--C语言中的偷梁换柱
  4. 2017年4月19日
  5. 如何在用户区显示一张位图
  6. How To Use Google Logging Library (glog)
  7. css字体转换程序(Node.js)
  8. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】...
  9. ORA-12638处理
  10. 如何把EXCEL 中的表格复制到WORD 中后不显示网格线?
  11. Redis中五中数据类型的实例
  12. Java线程中yield与join方法的区别
  13. Quartus Prime基础操作
  14. QAX答题页面js逆向分析(二)
  15. 【计算机组成原理】=【考研复试面试题】- 整合全家桶
  16. 提升智能工业领域人才就业率,维视智造开启产学研融合新航道
  17. C语言模拟实现strlen
  18. Hololens黑科技101
  19. 各种软件的视频教程 链接http://www.51zxw.net/default.aspx
  20. hexo博客优化之文章置顶+置顶标签

热门文章

  1. Docker加速器(阿里云)
  2. 羽化在photoshop中的含义
  3. Nuke Linux Crack
  4. Guava API 的使用笔记
  5. 秒懂:个人建网站选择服务器,云虚拟主机和云服务器应该选哪个?
  6. Iphone如何稳定地触发半屏模式?单手模式
  7. 长租公寓,年轻人的第一个巨坑
  8. python秒表小项目_Python语言写秒表计时器的GUI的方法|Python秒表案例教程
  9. 怎么用计算机打出派,如何在电脑上打出圆周率“π”。 懂得这些技巧就够了
  10. 智能技术发展迅速,嵌入式系统迎来市场新需