簡體   English   中英

無法在C中將套接字綁定到網絡

[英]Cannot bind socket to network in C

我正在嘗試在 C 中創建一個簡單的 HTTP 服務器。

不幸的是,我不太確定為什么會這樣,但是每當我嘗試將套接字綁定到地址時,我都會收到“無法分配請求的地址”。

if ( bind(servfd, (struct sockaddr*)&servaddr, servaddr_size) != 0 )
    {
        fprintf(stderr, "Failed to bind the socket to the network.\n");
        fflush(stdout);
        perror("bind failed. Error");
        return 1;
    }

這是我的服務器地址:

    struct sockaddr_in servaddr;

    memset(&servaddr, '0', sizeof(servaddr));

    servaddr.sin_family = AF_INET;
    servaddr.sin_port = INADDR_ANY;
    servaddr.sin_addr.s_addr = htons(PORT);

這是我的服務器選項:

if ( setsockopt(servfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) != 0 )
    {
        fprintf(stderr, "Failed to set sock opt.\n");
        fflush(stdout);
        return 1;
    }

我試過htonl INADDR_ANY ,我試過使用inet("127.0.0.1")inet("0.0.0.0") ,我試過多次更改端口。 見鬼,我嘗試使用sudo運行該應用程序,以防出現權限錯誤; 不是。

有任何想法嗎?

我認為您可能將這兩行的分配顛倒了:

servaddr.sin_port = INADDR_ANY;
servaddr.sin_addr.s_addr = htons(PORT);

嘗試:

servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = INADDR_ANY;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM