zoukankan      html  css  js  c++  java
  • TCP/IP 组播的发送和接收

       1:  /*
       2:   * =====================================================================================
       3:   *
       4:   *       Filename:  client.c
       5:   *
       6:   *    Description:  
       7:   *
       8:   *        Version:  1.0
       9:   *        Created:  03/14/2013 01:48:12 PM
      10:   *       Revision:  none
      11:   *       Compiler:  gcc
      12:   *
      13:   *         Author:  YOUR NAME (), 
      14:   *        Company:  
      15:   *
      16:   * =====================================================================================
      17:   */
      18:   
      19:  #include <stdio.h>
      20:  #include <sys/socket.h>
      21:  #include <netinet/in.h>
      22:  #include <arpa/inet.h>
      23:  #include <stdlib.h>
      24:  #include <strings.h>
      25:  #include <string.h>
      26:  #include <unistd.h>
      27:   
      28:  #define N 256
      29:   
      30:  typedef struct sockaddr SA;
      31:   
      32:  int main(int argc, char *argv[])
      33:  {
      34:   
      35:      int sockfd;
      36:      int on = 1;
      37:      socklen_t optlen = sizeof(on);
      38:      struct sockaddr_in broad_addr;
      39:      char buffer[N] = {"pengdonglin\n"};
      40:   
      41:   
      42:      if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
      43:      {
      44:          perror("fail to socket");
      45:          exit(-1);
      46:      }
      47:      
      48:   
      49:      bzero(&broad_addr, sizeof(struct sockaddr_in));
      50:   
      51:      broad_addr.sin_family = PF_INET;
      52:      broad_addr.sin_port = htons(atoi(argv[2]));
      53:      broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
      54:   
      55:      while(1)
      56:      {
      57:          sendto(sockfd,buffer, N, 0, (SA *)&broad_addr, sizeof(broad_addr)); 
      58:          sleep(1);
      59:      }
      60:   
      61:      return 0;
      62:  }

    接收端:

       1:  /*
       2:   * =====================================================================================
       3:   *
       4:   *       Filename:  client.c
       5:   *
       6:   *    Description:  
       7:   *
       8:   *        Version:  1.0
       9:   *        Created:  03/14/2013 01:48:12 PM
      10:   *       Revision:  none
      11:   *       Compiler:  gcc
      12:   *
      13:   *         Author:  YOUR NAME (), 
      14:   *        Company:  
      15:   *
      16:   * =====================================================================================
      17:   */
      18:   
      19:  #include <stdio.h>
      20:  #include <sys/socket.h>
      21:  #include <netinet/in.h>
      22:  #include <arpa/inet.h>
      23:  #include <stdlib.h>
      24:  #include <strings.h>
      25:  #include <string.h>
      26:  #include <unistd.h>
      27:   
      28:  #define N 256
      29:   
      30:  typedef struct sockaddr SA;
      31:   
      32:  int main(int argc, char *argv[])
      33:  {
      34:   
      35:      int sockfd;
      36:      struct sockaddr_in broad_addr, peeraddr;
      37:      socklen_t peerlen = sizeof(peeraddr);
      38:      char buffer[N];
      39:      struct ip_mreq mreq;
      40:   
      41:   
      42:      if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
      43:      {
      44:          perror("fail to socket");
      45:          exit(-1);
      46:      }
      47:      
      48:      bzero(&mreq, sizeof(mreq));
      49:      mreq.imr_multiaddr.s_addr = inet_addr("224.10.10.1");
      50:      mreq.imr_interface.s_addr = htonl(INADDR_ANY);
      51:      setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
      52:   
      53:   
      54:      bzero(&broad_addr, sizeof(struct sockaddr_in));
      55:      broad_addr.sin_family = PF_INET;
      56:      broad_addr.sin_port = htons(atoi(argv[2]));
      57:      broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
      58:   
      59:      if(bind(sockfd, (SA *)&broad_addr, sizeof(broad_addr)) < 0)
      60:      {
      61:          perror("fail to bind");
      62:          exit(-1);
      63:      }
      64:      while(1)
      65:      {
      66:          recvfrom(sockfd, buffer, N, 0, (SA *)&peeraddr, &peerlen); 
      67:   
      68:          printf("%s : %d  : %s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port),buffer);
      69:      }
      70:   
      71:      return 0;
      72:  }

    运行:

    发送端:

    image

    接收端:

     image

  • 相关阅读:
    AlwaysOn 执行备份任务
    SQL Server 2016 + AlwaysOn 无域集群
    IIS负载均衡
    利用mapWithState实现按照首字母统计的有状态的wordCount
    DStream转为DF的两种方式(突破map时元组22的限制)
    java.lang.reflect.InvocationTargetException at shade.com.datastax.spark.connector.google.common.base.Throwables.propagate(Throwables.java160)
    java学习路线
    Java线程间通信
    多线程对象及变量的并发访问
    Java多线程基础
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/2963469.html
Copyright © 2011-2022 走看看