【问题标题】:win32 socket bind func fails with error 10014 c++win32 套接字绑定函数失败,错误 10014 c++
【发布时间】:2020-04-13 14:18:28
【问题描述】:

我正在尝试在我的机器上运行 tcp 服务器,这主要是一个教程代码,但由于某种原因,绑定失败并出现错误 10014。如果有人感兴趣,sizeof(serverAddr) 在下面的代码中返回 16。我知道错误 10014 是什么意思,但似乎无法弄清楚为什么它会出现在 bind 一切似乎都正常。

#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"Ws2_32.lib")


int main()
{
    WSADATA WSAData;

    SOCKET server, client;

    SOCKADDR_IN serverAddr, clientAddr;

    int iResult = WSAStartup(MAKEWORD(2, 2), &WSAData);
    if (iResult != NO_ERROR) {
        std::cout << "startup error" << std::endl;
        return 1;
    }
    server = socket(AF_INET, SOCK_STREAM, 0);

    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(5555);


    if (bind(server, (SOCKADDR*)&serverAddr, sizeof(serverAddr) != 0))
    {
        std::cout << "bind " << WSAGetLastError() << " sizeof " << sizeof(serverAddr) << std::endl;
        std::cout << "cannot start server" << std::endl;
        return 0;
    }
    listen(server, 0);

    std::cout << "Listening for incoming connections..." << std::endl;

    char buffer[1024];
    int clientAddrSize = sizeof(clientAddr);
    if ((client = accept(server, (SOCKADDR*)&clientAddr, &clientAddrSize)) != INVALID_SOCKET)
    {
        std::cout << "Client connected!" << std::endl;
        recv(client, buffer, sizeof(buffer), 0);
        std::cout << "Client says: " << buffer << std::endl;
        memset(buffer, 0, sizeof(buffer));

        closesocket(client);
        std::cout << "Client disconnected." << std::endl;
    }
    return 0;
}

【问题讨论】:

    标签: windows sockets c++11 tcp


    【解决方案1】:

    括号有误。这一行:

    if (bind(server, (SOCKADDR*)&serverAddr, sizeof(serverAddr) != 0))
    

    应该是:

    if (bind(server, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) != 0)
    

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2015-03-05
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多