一直想学习网络,有幸看到陈硕老师的muduo代码,希望可以深入学习一下。
#ifndef MUDUO_NET_SOCKETSOPS_H
#define MUDUO_NET_SOCKETSOPS_H
#include <arpa/inet.h>
namespace muduo
{
namespace net
{
namespace sockets
{
int createNonblockingOrDie(sa_family_t family); //获得sock的句柄
int connect(int sockfd, const struct sockaddr* addr); //封装连接函数
void bindOrDie(int sockfd, const struct sockaddr* addr); //封装bind函数
void listenOrDie(int sockfd); //封装listen函数
int accept(int sockfd, struct sockaddr_in6* addr); //封装accept
ssize_t read(int sockfd, void *buf, size_t count); //封装read
ssize_t readv(int sockfd, const struct iovec *iov, int iovcnt);
ssize_t write(int sockfd, const void *buf, size_t count); //封装write
void close(int sockfd); //封装close
void shutdownWrite(int sockfd); //封装shutdownWrite
void toIpPort(char* buf, size_t size, const struct sockaddr* addr); //获取IP:PORT
void toIp(char* buf, size_t size, const struct sockaddr* addr); //获取IP
void fromIpPort(const char* ip, uint16_t port, struct sockaddr_in* addr); //ipv4设置IP和端口
void fromIpPort(const char* ip, uint16_t port, struct sockaddr_in6* addr); //ipv6设置IP和端口
int getSocketError(int sockfd); //获取socket的错误码
const struct sockaddr* sockaddr_cast(const struct sockaddr_in* addr);
const struct sockaddr* sockaddr_cast(const struct sockaddr_in6* addr);
struct sockaddr* sockaddr_cast(struct sockaddr_in6* addr);
const struct sockaddr_in* sockaddr_in_cast(const struct sockaddr* addr);
const struct sockaddr_in6* sockaddr_in6_cast(const struct sockaddr* addr);
struct sockaddr_in6 getLocalAddr(int sockfd);
struct sockaddr_in6 getPeerAddr(int sockfd);
bool isSelfConnect(int sockfd);
}
}
}
#endif // MUDUO_NET_SOCKETSOPS_H