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

📄 server.c

📁 自己写的多播测试程序
💻 C
字号:
//服务器端 跟普通的UDP服务器完全相同,除了IP地址设置成多播地址外 

  #include<stdio.h>
  #include<stdlib.h>
  #include<string.h>
  #include<unistd.h>
  #include<sys/types.h>
  #include<netinet/in.h>
  #include<sys/socket.h>
  #include<arpa/inet.h>
  #include<netdb.h>
  #include<net/if.h>
  
  
  const char *str = "broadcast from server";
  
  int main( int argc, char **argv )
  {
     int sockfd;
      struct sockaddr_in servaddr;
  
      u_char ttl = 12;
  
      sockfd = socket( AF_INET, SOCK_DGRAM, 0 );
      if( sockfd  == -1 )
          perror( "socket" );
      if( argc != 2 )
      {
          printf( "usage: %s 224.0.0.1\n", argv[0] );
          exit(1);
      }
  
      memset( &servaddr, 0 , sizeof(servaddr ) );
      servaddr.sin_family = AF_INET;
      servaddr.sin_port = htons( 10000 );
     inet_pton( AF_INET, argv[1], &servaddr.sin_addr.s_addr );
 
      //服务器可以不用设置该选项
      if( setsockopt( sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl) )  < 0)    //指定外出多播数据报的TTL

      {
          perror( "server setsockopt IP_MULTICAST_TTL " );
          exit(1);
      }
  
      perror( "server setsockopt IP_MULTICAST_TTL " );
  
      bind( sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr) );  //绑定
  
      while(1)
      {
          if( sendto( sockfd, str, strlen(str), 0, (struct sockaddr *)&servaddr, sizeof(servaddr) ) < 0 )    //给多播地址发送消息
          {
              perror( "sendto error" );
              exit(1);
          }
  
          sleep(1);
      }
      exit(0);
  } 

⌨️ 快捷键说明

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