网络编程相关接口
//创建套接字
int socket(int domain, int type, int protocol);
/***********************************************
*参数 @domain 网络协议一般使用AF_INET(IPV4)
* @type 传输协议
* SOCK_STREAM tcp协议
* SOCK_DGRAM udp协议
* @protocol 默认为0,由系统设置
*返回值 成功 文件描述符 失败 -1
***********************************************/
//向其他套接字发送信息
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
/***********************************************
*参数 @sockfd 套接字描述符
* @buf 缓冲区
* @len 发送的消息大小
* @flags 发送消息标志位,一般为0
* @dest_addr 接收端的主机信息
* @addrlen 接收端的主机信息大小
*返回值 成功 发送的消息的字节个数 失败 -1
*注意事项 由于相关结构体的类型为 struct sockaddr_in 而参数要求的类
* 型为 struct sockaddr 所以在使用时需要进行强制转换
***********************************************/
//相关结构体
struct sockaddr_in {
sa_family_t sin_family; //IP协议
in_port_t sin_port; //端口
struct in_addr sin_addr;
};
struct in_addr {
uint32_t s_addr; //ip
};
//接收其他套接字信息
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
/***********************************************
*参数 @sockfd 套接字描述符
* @buf 缓冲区
* @len 接收消息的大小
* @flags 发送消息标志位,一般为0
* @src_addr 源主机的信息
* @addrlen 源主机的信息大小
*返回值 成功 发送的消息的字节个数 失败 -1
*注意事项 由于相关结构体的类型为 struct sockaddr_in 而参数要求的类
* 型为 struct sockaddr 所以在使用时需要进行强制转换
***********************************************/
//绑定本地地址
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
/***********************************************
*参数 @sockfd 套接字描述符
* @addr 绑定的本地地址的结构体指针
* @addrlen 结构体大小
*
*返回值 成功 0 失败 -1
*注意事项 在使用 recvfrom 之前需要先绑定端口
***********************************************/
//监听tcp有无链接
int listen(int sockfd, int backlog);
/***********************************************
*参数 @sockfd 套接字描述符
* @backlog 连接客户端的等待队列长度
*返回值 成功 0 失败 -1
*注意事项 适用于tcp
***********************************************/
//接收连接请求
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
/***********************************************
*参数 @sockfd 套接字描述符
* @addr 记录对方主机地址的结构指针
* @addrlen 对方主机的地址信息长度
*返回值 成功 新的套接字描述符 失败 -1
*注意事项 适用于tcp
***********************************************/
/*********************************其他常用接口**********************************/
//将本地字节序转换为网络字节序
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
//将网络字节序转换为本地字节序
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
/***********************************************
*注意事项 由于不同架构的存储方式不同(大小端存储),
* 所以在上传至网络时需要将其转换为网络字节序(大端存储)
***********************************************/
//将字符串形式的点分十进制转换为网络字节序
in_addr_t inet_addr(const char *cp);
//将网络字节序转换为字符串形式的点分十进制
char *inet_ntoa(struct in_addr in);
标签:sockaddr,struct,int,编程,网络,接口,sockfd,接字,addr
From: https://www.cnblogs.com/waibibabu-/p/18233999