C (UDP) 中的套接字服务器不接收数据包。怎么做?

Socket server in C (UDP) doesn't receive packets. How to do?

我用C做了一个UDP套接字服务器。只有当数据包发送到127.0.0.1时服务器才能正常工作。我正在尝试用数据包发送方对其进行测试,我想在地址 192.168.231.54 处打开一个套接字。无论如何,如果我在代码中写入这个地址,我会收到一个错误(“无法分配请求的地址”),并且每个不同于 127.0.0.1 的地址都会出现这个错误。我想打开一个到 192.168.231.54 的套接字,我想用 Packet Sender 将数据包发送到这个地址。

这是服务器代码:

//*********SOCKET OPENING**************
   
    int fd;
    struct sockaddr_in serveraddr, cliaddr;

    if ( (fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
        perror( "socket failed" );
        exit(EXIT_FAILURE);
    }
        
    memset( &serveraddr, 0, sizeof(serveraddr) );
    memset(&cliaddr, 0, sizeof(cliaddr));

    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(50037);
    serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);  

    if ( bind(fd, (const struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0 ) {
        perror( "bind failed" );
        exit(EXIT_FAILURE);
    }
    else{
        perror("socket opened");
    }

    //Receiving data into hex_array array
    char hex_array[lenght];
    int len;
    len = sizeof(cliaddr);
    int n = recvfrom(fd, (uint8_t *)hex_array, lenght, NULL, ( struct sockaddr *) &cliaddr, &len);
    //Printing of the received data on the socket
    printf("START DEBUG:\n");
    printf("%s\n", hex_array);
    printf("END DEBUG.\n");

您绑定套接字的地址实际上必须是您计算机的 IP 地址。您不能随便选择一个地址。