1. #include"net.h"
    2. int main(int argc, const char *argv[])
    3. {
    4. int fd = -1;
    5. struct sockaddr_in sin;
    6. //1
    7. if((fd = socket(AF_INET,SOCK_DGRAM,0)) < 0)
    8. {
    9. perror("socket");
    10. exit(1);
    11. }
    12. //2youhua
    13. int b_reuse = 1;
    14. setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&b_reuse,sizeof(int));
    15. //3tianchong
    16. bzero(&sin,sizeof(sin));
    17. sin.sin_family = AF_INET;
    18. sin.sin_port = htons(SERV_PORT);
    19. sin.sin_addr.s_addr = htonl(INADDR_ANY);
    20. //4
    21. if(bind(fd,(struct sockaddr *)&sin,sizeof(sin)) < 0)
    22. {
    23. perror("bind");
    24. exit(1);
    25. }
    26. printf("receiver staring...ok\n");
    27. //5
    28. char buf[BUFSIZ];
    29. struct sockaddr_in cin;
    30. socklen_t addrlen = sizeof(sin);
    31. while(1)
    32. {
    33. bzero(buf,BUFSIZ);
    34. if(recvfrom(fd,buf,BUFSIZ-1,0,(struct sockaddr *)&cin,&addrlen) < 0)
    35. {
    36. perror("recvfrom");
    37. continue;
    38. }
    39. char ipv4_addr[16];
    40. if(!inet_ntop(AF_INET,(void *)&cin.sin_addr,ipv4_addr,sizeof(cin)))
    41. {
    42. perror("inet_ntop");
    43. exit(1);
    44. }
    45. printf("Recived boardcast data %s",buf);
    46. if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR)))
    47. {
    48. printf("Client(%s:%d) is exiting\n",ipv4_addr,ntohs(sin.sin_port));
    49. }
    50. }
    51. close(fd);
    52. return 0;
    53. }