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"};
      40:   
      41:   
      42:      if(argc < 3)
      43:      {
      44:          printf("usage: %s <ip> <port>\n",argv[0]);
      45:          exit(-1);
      46:      }
      47:      if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
      48:      {
      49:          perror("fail to socket");
      50:          exit(-1);
      51:      }
      52:      
      53:      if(setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, optlen) < 0)
      54:      {
      55:          perror("fail to getsockopt");
      56:          exit(-1);
      57:      }
      58:   
      59:      bzero(&broad_addr, sizeof(struct sockaddr_in));
      60:   
      61:      broad_addr.sin_family = PF_INET;
      62:      broad_addr.sin_port = htons(atoi(argv[2]));
      63:      broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
      64:   
      65:      while(1)
      66:      {
      67:          sendto(sockfd,buffer, N, 0, (SA *)&broad_addr, sizeof(broad_addr)); 
      68:          sleep(1);
      69:      }
      70:   
      71:      return 0;
      72:  }

    接收:

       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:   
      40:      if(argc < 3)
      41:      {
      42:          printf("usage: %s <ip> <port>\n",argv[0]);
      43:          exit(-1);
      44:      }
      45:   
      46:      if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
      47:      {
      48:          perror("fail to socket");
      49:          exit(-1);
      50:      }
      51:      
      52:   
      53:      bzero(&broad_addr, sizeof(struct sockaddr_in));
      54:   
      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

    接收端或者绑定的ip设为0

    image

  • 相关阅读:
    G
    F
    E
    D
    机器学习第二次作业
    机器学习第一次作业
    机器学习作业一
    软工实践个人总结
    第11组 Beta版本演示
    第11组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/2963464.html
Copyright © 2011-2022 走看看