[英]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.