簡體   English   中英

C-無法綁定服務器套接字

[英]C - cannot bind server socket

我正在用C語言編寫本地客戶端服務器應用程序,該應用程序在64位Windows 7計算機上運行。

我的問題是,當我為服務器套接字調用bind()時,它始終返回-1,而我似乎無法弄清楚原因。 我曾在調用bind()之前嘗試將setsockopt與SO_REUSEADDR一起使用,但最終無濟於事,因此我將其刪除。 我還嘗試將INADDR_ANY更改為inet_address(“ 127.0.0.1”)和inet_address(我的PC的ipv4),但這也不起作用。

這是服務器套接字設置的代碼:

SOCKET serverSocket;

//AF_UNIX for process communication
serverSocket = socket(AF_UNIX, SOCK_STREAM, 0);

struct sockaddr_in serverAddress;

serverAddress.sin_family = AF_UNIX;
serverAddress.sin_port = htons(10509);
serverAddress.sin_addr.s_addr = INADDR_ANY;

// always returns -1, no matter what I do.
if (bind(serverSocket, (LPSOCKADDR) &serverAddress, sizeof(serverAddress)) == -1)
{
    int result = MessageBoxA(NULL, "Failed to set up server. Continue?", "Server Error", MB_YESNO | MB_SYSTEMMODAL);

    closesocket(serverSocket);

    if (result == IDNO)
        exit(1);
    else
        goto cleanup;
}

...

為什么會這樣呢? 我該如何解決?

Windows 7上不提供AF_UNIX套接字。如果要在進程之間進行通信,只需更改為127.0.0.1上的AF_INET套接字。

暫無
暫無

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

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