C-无法绑定服务器套接字

时间:2018-11-11 16:15:28

标签: c windows sockets localserversocket

我正在用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;
}

...

为什么会这样?我该怎么解决?

1 个答案:

答案 0 :(得分:0)

Windows 7上没有AF_UNIX套接字。如果要在进程之间进行通信,只需更改为127.0.0.1上的AF_INET套接字。