udp_recv_netparam.c

来自「使用udp的broadcast方式写的c程序」· C语言 代码 · 共 60 行

C
60
字号
/*************本程序用于创建服务端程序*****************/#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <errno.h> #include "msgstruct.h"nettype *upd_receive_ip(){ 	int sockfd,n,addrlen,loop; 	struct sockaddr_in server_addr;  /*服务器地址信息*/	struct sockaddr_in client_addr;   /*客户端地址信息*/		static nettype init;	nettype * getmsg;	getmsg = (nettype *)&init;	sockfd=socket(AF_INET,SOCK_DGRAM,0); /*创建数据报套接字*/	if(sockfd<0) { 		printf("Socket Error:%s\n",strerror(errno)); 		return NULL; 	} 	loop = 1;	if(setsockopt(sockfd,SOL_SOCKET, SO_REUSEADDR,&loop, sizeof(loop)) < 0) { 		perror("setsockopt:SO_REUSEADDR");		exit(-1);	}	/* 服务器端填充 sockaddr_in结构 */	bzero(&server_addr,sizeof(struct sockaddr_in)); 	server_addr.sin_family=AF_INET; 	server_addr.sin_addr.s_addr=htonl(INADDR_ANY); 	server_addr.sin_port=htons(UDP_PORT); 	/*绑定套接字*/	if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))<0) { 		printf("Bind Error:%s\n",strerror(errno)); 		return NULL;		}	addrlen=sizeof(struct sockaddr);	n=recvfrom(sockfd,getmsg,sizeof(nettype),0,(struct sockaddr *)&client_addr,&addrlen); 	//printf("Got packet from %s\n The Num. of packet is:%d\n",inet_ntoa(client_addr.sin_addr),n);	close(sockfd);	return getmsg;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?