⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpclient.c

📁 Linux网络编程之UDP的客户端程序简单代码
💻 C
字号:
/************************* File Info ******************************** File name:           client.c** Descriptions:        client of UDP.***********************************************************************************************************/#include <unistd.h> #include <stdio.h> #include <stdlib.h>#include <errno.h> #include <string.h>#include <fcntl.h>  #include <netdb.h> #include <sys/types.h> #include <sys/stat.h> #include <netinet/in.h>#include <arpa/inet.h>  #include <sys/socket.h> #define PORT 4567                 #define LENGTH 1024                   int main(int argc, char *argv[]){      int    fd,sockfd,numbytes;   //	int	 addrlen;                                    	char   buf[LENGTH];	char   msg[]={"hello"};  	socklen_t addrlen;           							struct sockaddr_in addr_sev;  	struct sockaddr_in addr_cli;                //struct hostent     *he;         /*  检查参数 */   if (argc != 2){                                printf("Please input server IP!\n");      exit(1);          } 	/*打开文件*/   fd=open("/home/rev",O_CREAT|O_WRONLY);    if(fd<0){                 printf("open file error!\n");      exit(1);           }     /*if((he=gethostbyaddr((char *)&addr_sev.sin_addr,4,AF_INET)) == NULL){      printf("get error\n");      exit(1);          }  */          /*  获取Socket文件描述符  */   if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1){       printf("creat socket error!\n");       exit(1);         }          /*  填充Socket地址结构*/   bzero(&(addr_cli), sizeof(addr_cli));                          addr_cli.sin_family = AF_INET;                           addr_cli.sin_port = htons(PORT);		addrlen = sizeof(struct sockaddr);                         //addr_sev.sin_addr=*((struct in_addr *)he->h_addr);  	if(inet_aton(argv[1],&addr_cli.sin_addr)<0){		printf("IP convert error!\n");		exit(1);	}      	printf("Receiving data please wait......\n");   //bzero(buf,LENGTH);   	 /*  接收数据 */         	while(1){		if(sendto(sockfd, msg, strlen(msg), 0, (struct sockaddr *)&addr_cli, sizeof(addr_cli))==-1){      	printf ("sendto fail!\n");      	exit(1);		}      numbytes=recvfrom(sockfd,buf,LENGTH,0,(struct sockaddr *)&addr_sev,&addrlen);		if(numbytes<0){			printf("download from server error\n"); 						exit(1);		}		   if((write(fd,buf,numbytes))<0){			printf("write fail!\n");			exit(1);	                     }    		if(numbytes != LENGTH){			printf("Receive data complete!\n");			break;		}//		close(sockfd); //		close(fd);  	}	exit(0);}

⌨️ 快捷键说明

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