行业知识
Linux-网络相关函数接口-012
2026-11-06 15:19:09
来源:互联网转载
1.UDP编程
socket套index.php/tags-41973.html" >���字编程
()1.1【socket】
1.1.1函数原型
【int socket(int domain, int type, int protocol);】
1.1.2函数功能
创建一个用来通信的文件描述符
1.1.3函数参数
【domain】:使用的协议族 AF_INET (IPv4协议族)【type】:套接字类型 【SOCK_STREAM】:流式套接字 【SOCK_DGRAM】:数据报套接字 【SOCK_RAW】:原始套接字【protocol】:协议,默认为0
1.1.4返回值
【成功】:返回文件描述符【失败】:返回【-1】
1.2【sendto】
1.2.1函数原型
【ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);】
1.2.2函数功能
利用套接字向指定地址发送数据信息
1.2.3函数参数
【sockfd】:套接字文件描述符【buf】:发送数据空间首地址【len】:发送数据的长度【flags】:属性默认为0【dest_addr】:目的地址信息存放的空间首地址【addrlen】:目的地址的长度
struct sockaddr_in { sa_family_t sin_family;/*address family: AF_INET */ in_port_t sin_port;/* port in network byte order */ struct in_addr sin_addr; /* internet address */}; struct in_addr { uint32_t s_addr; /*address in network byte order */}; 1.2.4返回值
【成功】:返回实际发送字节数【失败】:返回【-1】
1.3【inet_addr】
1.3.1函数原型
【in_addr_t inet_addr(const char *cp);】
1.3.2函数功能
将字符串IP地址转换为内存中的IP地址
1.3.3函数参数
【cp】:
1.3.4返回值
【成功】:【失败】:返回【-1】
1.4【htons】
1.4.1函数原型
【uint16_t htons(uint16_t hostshort);】
1.4.2函数功能
将本地字节序转换为网络的大端字节序
1.4.3函数参数
【hostshort】:
1.4.4返回值
【成功】:【失败】:返回【-1】
源码示例:
()//发送示例int main(void){int sockfd = 0;struct sockaddr_in recvaddr;char tmpbuff[1024] = {"hello world"};ssize_t nsize = 0;/* 创建用来通信的UDP套接字 */sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == sockfd){perror("fail to socket");return -1;}/* 对接收方地址赋值 */recvaddr.sin_family = AF_INET;recvaddr.sin_port = htons(50000);//本地字节序转换为网络字节序recvaddr.sin_addr.s_addr = inet_addr("192.168.1.110");/* 发送信息 */nsize = sendto(sockfd, tmpbuff, strlen(tmpbuff), 0, (struct sockaddr *)&recvaddr, sizeof(recvaddr)); //接收端地址强制转换为通用类型if (-1 == nsize){perror("fail to sendto");return -1;}printf("成功发送 %ld 字节!\n", nsize);close(sockfd);return 0;}