前言:每篇阅读某个类的文章,我都会将头文件放在第一部分注释,cc文件放在第二部注释。仅当作我作为学习muduo库的记录。
该类主要作用:Socket类其实就是对于一个调用过socket()函数所生成的文件描述符sockfd的一个封装,该类里面主要实现了bind()和listen()函数的功能,还有accpet()。还可设置sockfd的各种属性,比如开启Nagle算法,保活机制等,
1. Socket.h头文件
/// sockfd的封装类
/// 销毁对象时会关闭sockfd
/// 该类是线程安全的,所有的操作会委托操作系统完成
class Socket : noncopyable
{
public:
explicit Socket(int sockfd)
: sockfd_(sockfd)
{
}
// Socket(Socket&&) // move constructor in C++11
~Socket();
int fd() const {
return sockfd_; }
// 调用成功返回true
bool getTcpInfo(struct tcp_info*) const;
bool getTcpInfoString(char* buf, int len) const;
/// 如果地址已经被使用了就中断
void bindAddress(const InetAddress& localaddr); //绑定ip和port操作
void listen(); //开启监听操作
///成功时,返回一个非负整数的文件描述符,它被设置SOCK_NONBLOCK和SOCK_CLOEXEC属性,
///peeraddr对象内容被赋值。失败时,返回-1,并且peeraddr对象没被赋值
int accept(InetAddress* peeraddr);
//关闭写端
void shutdownWrite();
///
/// 是否设置TCP_NODELAY选项(是否开启Nagle算法)
///
void setTcpNoDelay(bool on);