目录
主机字节序与网络字节序
网络字节序:大端序: 低地址储存高位字节
主机字节序:小端序:低地址储存低位字节
linux 字节序转换
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
专用socket地址
sockaddr_in //ipv4
sockaddr_in6 //ipv6
ip地址转换函数
#include <netinet/in.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
//inet_addr 将点分十进制字符串表示的ip地址转化为网络字节序整数表示的ipv4地址
// inet_aton 将转换的地址填入inp所指向的地址中
// inet_ntoa 转化为点分十进制字符串 内部使用静态变量 不可重入
创建连接
#include<sys/socket.h>
#include<sys/types.h>
int socket(int domain, int type, int protocol);
int bind(int fd, const struct sockaddr* my_addr, socklen_t addrlen);
int listen(int fd, int backlog);
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
数据读写
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
ssize_t send(int sockfd, const void *buf, size_t len, int flags);