sockaddr操作C++封装
代码严格遵循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++封装相关推荐
- Linux socket编程(一) 对套接字操作的封装
转载:http://www.cnblogs.com/-Lei/archive/2012/09/04/2670942.html 以前写的,现在回顾一下: 下面是对socket操作的封装,因为在Linux ...
- 小博老师解析Java核心技术 ——JDBC数据库操作类封装
2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...
- PHP中对数据库操作的封装
在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...
- mysql函数封装_Mysql对文件操作的封装
在查看Mysql对文件的操作中发现,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录操作函数使用了CreatFile.Clo ...
- php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
现在我们把其封装在dbfz.inc中,其设计如下: $#@60;? class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表mysql,当为 2 ...
- 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装
快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...
- android 字符串数组去重,GitHub - deng-ming-hao/ec-do: 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等。...
ec-do 自己封装的常用操作实例 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等. 使用方法 引入ec-do.js //去除空格 ecDo.trim(' ...
- java_web:使用javabean实现登录操作(封装业务逻辑的javabean,且使用封装数据的实体类传参)
javabean的使用 1.将jsp中要用到的登录操作的代转移到java类中 2.javabean的作用: a.减轻jsp的复杂度 b.提高代码复用 3.javabean的定义 a.public修饰的 ...
- java_web:使用javabean实现登录操作(封装业务逻辑的javabean)
javabean的使用 1.将jsp中要用到的登录操作的代转移到java类中 2.javabean的作用: a.减轻jsp的复杂度 b.提高代码复用 3.javabean的定义 a.public修饰的 ...
最新文章
- Java基础巩固——反射
- Matlab Simulink如何生成谐波
- 面向对象的C语言编程-DynamicLinkageGenericFunctions--C语言中的偷梁换柱
- 2017年4月19日
- 如何在用户区显示一张位图
- How To Use Google Logging Library (glog)
- css字体转换程序(Node.js)
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】...
- ORA-12638处理
- 如何把EXCEL 中的表格复制到WORD 中后不显示网格线?
- Redis中五中数据类型的实例
- Java线程中yield与join方法的区别
- Quartus Prime基础操作
- QAX答题页面js逆向分析(二)
- 【计算机组成原理】=【考研复试面试题】- 整合全家桶
- 提升智能工业领域人才就业率,维视智造开启产学研融合新航道
- C语言模拟实现strlen
- Hololens黑科技101
- 各种软件的视频教程 链接http://www.51zxw.net/default.aspx
- hexo博客优化之文章置顶+置顶标签