【Muduo源码剖析笔记】 网络库之Socket
Socket
定义了Socket类,封装了socket文件描述子,当对象被销毁的时候就会自动关闭sockfd。是线程安全的类。内就包含了一个数据对象,const int sockfd_。
explicit Socket(int sockfd) : sockfd_(sockfd)
构造函数,使用一个文件描述符。
fd()
返回文件描述符
bool getTcpInfo(struct tcp_info*) const
tcp_info类的声明在netinet/tcp.h里。功能是将本sockfd的tcp_info内容放置到指针中。
// struct tcp_info is in <netinet/tcp.h>
先把tcpi里的内存空间全部置为0,
::getsockopt(sockfd_, SOL_TCP, TCP_INFO, tcpi, &len)
bool getTcpInfoString(char* buf, int len) const
将sockfd的tcp_info转换成char形式放置到buf中。使用snprintf完成类型转换。
Socket::bindAddress(const InetAddress& addr)
对sockfd进行命名,使用参数中的地址。
InetAddress是对地址进行封装的一个类。
Socket::listen()
同上
Socket::accept(InetAddress* peeraddr)
主要还是调用了socketsops中的accept函数完成操作。