📄 udpserver.c
字号:
/************************* File Info ******************************** File name: server.c** Descriptions: server of UDP.*********************************************************************************************************/#include <unistd.h> #include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <fcntl.h> #include <sys/types.h>#include <sys/stat.h> #include <netinet/in.h>#include <sys/wait.h>#include <arpa/inet.h> #include <sys/socket.h> #define PORT 4567 #define LENGTH 1024 int main(int argc, char *argv[]){ int sockfd,numbytes,read_bytes; socklen_t addrlen; int fd; char buf[LENGTH]; char msg[LENGTH+1]; struct sockaddr_in addr_sev; struct sockaddr_in addr_cli; /* 检查参数 */ if (argc != 2){ printf("please input file dirctory!\n"); exit(1); } if((fd=open(argv[1],O_RDONLY)) < 0){ //加入命令行后,没法读普通文件?! printf("open file error!\n"); exit(1); } /* 获取Socket文件描述符 */ if((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1 ){ printf ("creat socket error\n"); exit(1); } /* 填充本地Socket地址结构*/ bzero(&addr_sev, sizeof(addr_sev)); addr_sev.sin_family = AF_INET; addr_sev.sin_port = htons(PORT); addr_sev.sin_addr.s_addr = htonl(INADDR_ANY); /* 绑定端口*/ if(bind(sockfd, (struct sockaddr*)&addr_sev, sizeof(struct sockaddr)) == -1 ){ printf ("Failed to bind Port %d.\n",PORT); exit(1); } addrlen = sizeof(struct sockaddr_in); printf("Please wait......\n"); while(1){ read_bytes=read(fd,buf,LENGTH); //printf("read %d bytes\n",read_bytes); if(read_bytes < 1){ printf("read file error\n"); //若读取失败,程序结束。 exit(1); } if((numbytes = recvfrom(sockfd, msg, LENGTH, 0, (struct sockaddr *)&addr_cli, &addrlen)) == -1){ printf("receive error!\n"); exit(1); } //printf("get message:%s\n",msg); if((numbytes=sendto(sockfd, buf, read_bytes, 0, (struct sockaddr *)&addr_cli, sizeof(addr_cli)))==-1){ printf("send data error!\n"); exit(1); } // printf("Send success:total data is %d bytes!\n",numbytes); if(numbytes != LENGTH){ printf("Data sent complete!\n"); break; } //close(sockfd); //close(fd); } exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -