#include"net.h"int main(int argc, const char *argv[]){ int fd = -1; struct sockaddr_in sin; //1 if((fd = socket(AF_INET,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(1); } //2youhua int b_reuse = 1; setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&b_reuse,sizeof(int)); //3tianchong bzero(&sin,sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(SERV_PORT); sin.sin_addr.s_addr = htonl(INADDR_ANY); //4 if(bind(fd,(struct sockaddr *)&sin,sizeof(sin)) < 0) { perror("bind"); exit(1); } printf("server staring...ok\n"); //5 char buf[BUFSIZ]; struct sockaddr_in cin; socklen_t addrlen = sizeof(sin); while(1) { bzero(buf,BUFSIZ); if(recvfrom(fd,buf,BUFSIZ-1,0,(struct sockaddr *)&cin,&addrlen) < 0) { perror("recvfrom"); continue; } char ipv4_addr[16]; if(!inet_ntop(AF_INET,(void *)&cin.sin_addr,ipv4_addr,sizeof(cin))) { perror("inet_ntop"); exit(1); } printf("Recived from(%s:%d),data:%s",ipv4_addr,ntohs(sin.sin_port),buf); if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR))) { printf("Client(%s:%d) is exiting\n",ipv4_addr,ntohs(sin.sin_port)); } } close(fd); return 0;}