各自的特点
  •      单播:点对点      --数据报发送方式只有一个接收方
     广播:点对局域网所有的主机    --同时发给局域网中的所有主机,只有用户数据报套接字才能广播(UDP)
     组播:点对面(一部分主机)
1. 广播
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>

#define  LEN  128

int main(int argc, const char *argv[])
{
    
    int sockfd;
    struct sockaddr_in serveraddr;
    char buf[LEN];

    if(argc != 3)
    {
        fprintf(stderr, "Usage:%s serverip port.\n", argv[0]);
        return -1;
    }

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if(sockfd < 0)
    {
        perror("fail to socket");
    }

    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = inet_addr(argv[1]);
    serveraddr.sin_port = htons(atoi(argv[2]));

    if(connect(sockfd, (struct sockaddr*)&serveraddr,sizeof(struct sockaddr)) < 0)
    {
        perror("connect failed.");
        return -1;
    }

    while(1)
    {

        printf("input > ");
        fgets(buf, LEN, stdin);
        if(send(sockfd, buf, sizeof(buf), 0) < 0)
        {
            perror("fail to send");
            return -1;
        }
        if(strncmp(buf,"quit", 4) == 0)
        {
            break;
        }
        if(recv(sockfd, buf, sizeof(buf), 0) < 0)
        {
            perror("fail to recv");
            return -1;
        }
        printf("buf:%s\n", buf);
    }

    close(sockfd);


    return 0;
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2021-12-11
  • 2021-11-29
  • 2022-01-05
  • 2022-12-23
  • 2021-08-24
猜你喜欢
  • 2022-12-23
  • 2021-07-20
  • 2021-04-15
  • 2022-12-23
  • 2021-12-05
  • 2021-12-27
  • 2021-11-19
相关资源
相似解决方案