create_UDP_socket(char *ip, int port, int type)
{
struct sockaddr_in addr;
int sockfd;
int on_off = 1;
addr.sin_family = AF_INET;
if (ip == NULL) {
addr.sin_addr.s_addr = htonl(INADDR_ANY);
}
else {
addr.sin_addr.s_addr = inet_addr(ip);
}
addr.sin_port = htons(port);
if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
return(-1);
}
fcntl(sockfd, F_SETFD, FD_CLOEXEC);
if(type == 0) {//listener
setsockopt(sockfd,SOL_SOCKET, SO_REUSEADDR, (const void *)&on_off, sizeof(on_off));
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
close(sockfd);
return(-1);
}
}
else {//sender
if(connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
close(sockfd);
return(-1);
}
}
return(sockfd);
}
本文介绍了一个用于创建 UDP socket 的 C 语言函数 create_UDP_socket。该函数接收 IP 地址、端口和类型作为参数,并根据参数创建监听或发送类型的 UDP socket。文章详细展示了如何设置 socket 地址结构、创建 socket、设置选项以及进行 bind 或 connect 操作。
1027

被折叠的 条评论
为什么被折叠?



