网络编程相关接口

网络编程相关接口

//创建套接字
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);
posted @ 2024-06-05 22:04  歪币八卜  阅读(36)  评论(0)    收藏  举报