当前位置: 首页 > news >正文

广州最好的网站设计广州陈村网站建设

广州最好的网站设计,广州陈村网站建设,织梦dedecms教育培训网站模板,网站多少页面合适InetAddress InetAddress 类是 muduo 网络库中的一个重要类#xff0c;用于表示网络中的 IP 地址和端口号。 InetAddress 类在 muduo 网络库中被广泛使用#xff0c;用于表示网络中的通信实体的地址信息#xff0c;例如服务器地址、客户端地址等。通过 InetAddress 类用于表示网络中的 IP 地址和端口号。 InetAddress 类在 muduo 网络库中被广泛使用用于表示网络中的通信实体的地址信息例如服务器地址、客户端地址等。通过 InetAddress 类我们可以方便地操作 IP 地址和端口号实现网络通信的功能。 源码比较简单,已经编写详细注释 源码剖析 InetAddress.h // Copyright 2010, Shuo Chen. All rights reserved. // http://code.google.com/p/muduo/ // // Use of this source code is governed by a BSD-style license // that can be found in the License file.// Author: Shuo Chen (chenshuo at chenshuo dot com) // // This is a public header file, it must only include public header files.#ifndef MUDUO_NET_INETADDRESS_H #define MUDUO_NET_INETADDRESS_H#include muduo/base/copyable.h #include muduo/base/StringPiece.h#include netinet/in.hnamespace muduo { namespace net { namespace sockets { const struct sockaddr* sockaddr_cast(const struct sockaddr_in6* addr); }/// /// Wrapper of sockaddr_in. /// /// This is an POD interface class. class InetAddress : public muduo::copyable {public:/// Constructs an endpoint with given port number./// Mostly used in TcpServer listening.explicit InetAddress(uint16_t port 0, bool loopbackOnly false, bool ipv6 false);/// Constructs an endpoint with given ip and port./// c ip should be 1.2.3.4InetAddress(StringArg ip, uint16_t port, bool ipv6 false);/// Constructs an endpoint with given struct c sockaddr_in/// Mostly used when accepting new connectionsexplicit InetAddress(const struct sockaddr_in addr): addr_(addr){ }explicit InetAddress(const struct sockaddr_in6 addr): addr6_(addr){ }//返回addr_地址成员变量的协议族sa_family_t family() const { return addr_.sin_family; }//获取ip地址的点十分进制的字符串string toIp() const;//获取ip地址和port端口的点十分进制的字符串string toIpPort() const;//获取端口号(本机字节序)uint16_t port() const;// default copy/assignment are Okay//返回sockaddr结构体指针const struct sockaddr* getSockAddr() const { return sockets::sockaddr_cast(addr6_); }//设置SockAddrvoid setSockAddrInet6(const struct sockaddr_in6 addr6) { addr6_ addr6; }//获取ip地址(网络字节序)uint32_t ipv4NetEndian() const;//获取端口号(网络字节序)uint16_t portNetEndian() const { return addr_.sin_port; }// resolve hostname to IP address, not changing port or sin_family// return true on success.// thread safe//通过主机名解析出ip地址static bool resolve(StringArg hostname, InetAddress* result);// static std::vectorInetAddress resolveAll(const char* hostname, uint16_t port 0);// set IPv6 ScopeID//设置ipv6地址的作用域范围。void setScopeId(uint32_t scope_id);private:union{//ipv4struct sockaddr_in addr_;//ipv6struct sockaddr_in6 addr6_;}; };} // namespace net } // namespace muduo#endif // MUDUO_NET_INETADDRESS_H InetAddress.cc // Copyright 2010, Shuo Chen. All rights reserved. // http://code.google.com/p/muduo/ // // Use of this source code is governed by a BSD-style license // that can be found in the License file.// Author: Shuo Chen (chenshuo at chenshuo dot com)#include muduo/net/InetAddress.h#include muduo/base/Logging.h #include muduo/net/Endian.h #include muduo/net/SocketsOps.h#include netdb.h #include netinet/in.h// INADDR_ANY use (type)value casting. #pragma GCC diagnostic ignored -Wold-style-cast static const in_addr_t kInaddrAny INADDR_ANY; static const in_addr_t kInaddrLoopback INADDR_LOOPBACK; #pragma GCC diagnostic error -Wold-style-cast// /* Structure describing an Internet socket address. */ // struct sockaddr_in { // sa_family_t sin_family; /* address family: AF_INET */ // uint16_t sin_port; /* port in network byte order */ // struct in_addr sin_addr; /* internet address */ // };// /* Internet address. */ // typedef uint32_t in_addr_t; // struct in_addr { // in_addr_t s_addr; /* address in network byte order */ // };// struct sockaddr_in6 { // sa_family_t sin6_family; /* address family: AF_INET6 */ // uint16_t sin6_port; /* port in network byte order */ // uint32_t sin6_flowinfo; /* IPv6 flow information */ // struct in6_addr sin6_addr; /* IPv6 address */ // uint32_t sin6_scope_id; /* IPv6 scope-id */ // };using namespace muduo; using namespace muduo::net;static_assert(sizeof(InetAddress) sizeof(struct sockaddr_in6),InetAddress is same size as sockaddr_in6); static_assert(offsetof(sockaddr_in, sin_family) 0, sin_family offset 0); static_assert(offsetof(sockaddr_in6, sin6_family) 0, sin6_family offset 0); static_assert(offsetof(sockaddr_in, sin_port) 2, sin_port offset 2); static_assert(offsetof(sockaddr_in6, sin6_port) 2, sin6_port offset 2);InetAddress::InetAddress(uint16_t portArg, bool loopbackOnly, bool ipv6) {static_assert(offsetof(InetAddress, addr6_) 0, addr6_ offset 0);static_assert(offsetof(InetAddress, addr_) 0, addr_ offset 0);if (ipv6){memZero(addr6_, sizeof addr6_);addr6_.sin6_family AF_INET6;in6_addr ip loopbackOnly ? in6addr_loopback : in6addr_any;addr6_.sin6_addr ip;addr6_.sin6_port sockets::hostToNetwork16(portArg);}else{memZero(addr_, sizeof addr_);addr_.sin_family AF_INET;in_addr_t ip loopbackOnly ? kInaddrLoopback : kInaddrAny;addr_.sin_addr.s_addr sockets::hostToNetwork32(ip);addr_.sin_port sockets::hostToNetwork16(portArg);} }InetAddress::InetAddress(StringArg ip, uint16_t portArg, bool ipv6) {if (ipv6 || strchr(ip.c_str(), :)){memZero(addr6_, sizeof addr6_);sockets::fromIpPort(ip.c_str(), portArg, addr6_);}else{memZero(addr_, sizeof addr_);sockets::fromIpPort(ip.c_str(), portArg, addr_);} }string InetAddress::toIpPort() const {char buf[64] ;sockets::toIpPort(buf, sizeof buf, getSockAddr());return buf; }string InetAddress::toIp() const {char buf[64] ;sockets::toIp(buf, sizeof buf, getSockAddr());return buf; }uint32_t InetAddress::ipv4NetEndian() const {assert(family() AF_INET);return addr_.sin_addr.s_addr; }uint16_t InetAddress::port() const {return sockets::networkToHost16(portNetEndian()); }static __thread char t_resolveBuffer[64 * 1024];bool InetAddress::resolve(StringArg hostname, InetAddress* out) {assert(out ! NULL);struct hostent hent;struct hostent* he NULL;int herrno 0;memZero(hent, sizeof(hent));//通过主机名解析出ip地址int ret gethostbyname_r(hostname.c_str(), hent, t_resolveBuffer, sizeof t_resolveBuffer, he, herrno);if (ret 0 he ! NULL){assert(he-h_addrtype AF_INET he-h_length sizeof(uint32_t));out-addr_.sin_addr *reinterpret_caststruct in_addr*(he-h_addr);return true;}else{if (ret){LOG_SYSERR InetAddress::resolve;}return false;} }void InetAddress::setScopeId(uint32_t scope_id) {if (family() AF_INET6){addr6_.sin6_scope_id scope_id;} }
http://www.zqtcl.cn/news/494782/

相关文章:

  • 大兴专注高端网站建设交互设计留学
  • 想要黑掉一个网站 要怎么做网页设计师培训机构有吗
  • 做网站网站应该注意什么关于建设网站的会议纪要
  • 什么网站建设最简单做毕业设计实物的网站
  • 正规网站开发文案电商网站与企业网站区别
  • 襄阳做网站比较有实力的公司长沙出名的网站设计推广
  • 徐州网站设计师最便宜的购物平台
  • 网站域名和空间费用wordpress是是什么技术
  • 企业制作网站一般多少钱上海网站制作费用
  • 苏州住建网站什么叫关键词
  • 电商网站开发过程是什么推广整合营销
  • 网页建站软件网络市场调研的步骤
  • 自己做的网站怎样赚钱长沙专业做网站排名
  • 张家界做网站公司国内最先做弹幕的网站
  • 免费快速建站网站做网站用什么数据库
  • 哪有做课件赚钱的网站温州设计公司排名
  • 西安网站建设公司php大气企业网站
  • 天河公司网站建设内蒙古建设厅安全资料网站
  • 学习网站的建设怎么做网站建设作业
  • 做公司产品展示网站企业网盘源码
  • 南通做网站企业初中生代表性设计制作作品图片
  • php框架做网站好处网站后台模板免费下载
  • 新兴县建设局网站建筑工程网络计划技术
  • 住房和城乡建设部网站北京网站建设设计规划
  • 哪个网站做logo设计师网络营销心得体会800字
  • 广州一起做的网站动态数据库网站
  • 网站程序预装深圳市住房和建设局陈斌
  • 网站建设历程wordpress国内主题排行
  • 公司网站建设及优化计划书找能做网站的
  • 网站建设方案模板下载南宁有名的网络公司