【问题标题】:C - cannot bind server socketC - 无法绑定服务器套接字
【发布时间】:2019-04-14 11:51:42
【问题描述】:

我正在用 C 语言编写一个本地客户端-服务器应用程序,在 64 位 Windows 7 机器上运行。

我的问题是,当我为服务器套接字调用 bind() 时,它总是返回 -1,我似乎不知道为什么。在调用 bind() 之前,我尝试将 setsockopt 与 SO_REUSEADDR 一起使用,但最终什么也没做,所以我将其删除。我还尝试将 INADDR_ANY 更改为 inet_address("127.0.0.1") 和 inet_address(ipv4 of my pc),但也没有用。

这是服务器套接字设置的代码:

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;
}

...

为什么会这样?我能做些什么来解决它?

【问题讨论】:

    标签: c windows sockets localserversocket


    【解决方案1】:

    AF_UNIX 套接字在 Windows 7 上不可用。如果您想在进程之间进行通信,只需更改为 127.0.0.1 上的 AF_INET 套接字即可。

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2010-11-24
      • 1970-01-01
      • 2021-02-18
      • 2013-08-18
      相关资源
      最近更新 更多