Muduo网络库源码分析之对socket及其相关操作的封装.docxVIP

Muduo网络库源码分析之对socket及其相关操作的封装.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Muduo网络库源码分析之对socket及其相关操作的封装.docx

主要涉及到的类和实现文件有:Endian.h?提供了字节序转换的函数。Socket.h/Socket.cc?socketfd 的封装,提供了绑定地址、开始listen、接受连接等操作,并可设置套接字选项。InetAddress.h/InetAddress.cc?套接字地址的封装,提供了多种方式初始化一个地址,还提供方法从地址中拿到 ip 和 port。SocketsOps.h/SocketsOps.cc?封装了 socket 相关的一些操作,提供给 Socket 和 InetAddress 用。这部分就是基本的 TCP 套接字编程和套接字选项的知识,代码逻辑也很简单,推荐看下 UNP卷一 的相关章节。下面逐一看下这几个相关的文件。字节序转换部分(Endian.h)#ifndef MUDUO_NET_ENDIAN_H#define MUDUO_NET_ENDIAN_H#include stdint.h#include endian.hnamespace muduo{namespace net{namespace sockets{// the inline assembler code makes type blur,// so we disable warnings for a while.#if defined(__clang__) || __GNUC_PREREQ (4,6)#pragma GCC diagnostic push#endif#pragma GCC diagnostic ignored -Wconversion#pragma GCC diagnostic ignored -Wold-style-cast/* uint64_t 的整形数字由机器字节序转化为网络字节序 */inline uint64_t hostToNetwork64(uint64_t host64){ return htobe64(host64);}/* uint32_t 的整形数字由机器字节序转化为网络字节序 */inline uint32_t hostToNetwork32(uint32_t host32){ return htobe32(host32);}/* uint16_t 的整形数字由机器字节序转化为网络字节序 */inline uint16_t hostToNetwork16(uint16_t host16){ return htobe16(host16);}/* uint64_t 的整形数字由网络字节序转化为机器字节序 */inline uint64_t networkToHost64(uint64_t net64){ return be64toh(net64);}/* uint32_t 的整形数字由网络字节序转化为机器字节序 */inline uint32_t networkToHost32(uint32_t net32){ return be32toh(net32);}/* uint16_t 的整形数字由网络字节序转化为机器字节序 */inline uint16_t networkToHost16(uint16_t net16){ return be16toh(net16);}#if defined(__clang__) || __GNUC_PREREQ (4,6)#pragma GCC diagnostic pop#else#pragma GCC diagnostic warning -Wconversion#pragma GCC diagnostic warning -Wold-style-cast#endif}}}#endif // MUDUO_NET_ENDIAN_H12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667SocketSocket.h#ifndef MUDUO_NET_SOCKET_H#define MUDUO_NET_SOCKET_H#include boost/noncopyable.hpp// struct tcp_info is in netinet/tcp.hstruct tcp_info;namespace muduo{////// TCP networking.///namespace net{class InetAddress;/// It closes the sockfd when desctructs./* sock 描述符 fd的封装,实现了 绑定了地址,开始监听 并接受连接 */cla

文档评论(0)

czy2014 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档