How to UDP Broadcast with C in Linux?

前端 未结 4 1598
一向
一向 2020-12-13 00:52

How to UDP Broadcast with C in Linux?

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-13 01:16

    Unwind has it right, except you should use 'sendto'

    Here is an example, that assumes you already have a socket. It was taken from clamav

    static void
    broadcast(const char *mess)
    {
        struct sockaddr_in s;
    
        if(broadcastSock < 0)
            return;
    
        memset(&s, '\0', sizeof(struct sockaddr_in));
        s.sin_family = AF_INET;
        s.sin_port = (in_port_t)htons(tcpSocket ? tcpSocket : 3310);
        s.sin_addr.s_addr = htonl(INADDR_BROADCAST);
    
        cli_dbgmsg("broadcast %s to %d\n", mess, broadcastSock);
        if(sendto(broadcastSock, mess, strlen(mess), 0, (struct sockaddr *)&s, sizeof(struct sockaddr_in)) < 0)
            perror("sendto");
    }
    

提交回复
热议问题