0

我正在尝试移植一些遗留代码并注意到一些问题。

我已经隔离了一个简单示例的代码。下面的套接字创建代码有什么问题?

#include <iostream>
#include <winsock2.h>

int main()
{
    std::cout << "Hello World!\n";
    sockaddr_in sockAddr;
    uint16_t PortNumber = 2000;
    memset(&sockAddr, 0, sizeof(sockAddr));
    sockAddr.sin_family = AF_INET;
    sockAddr.sin_port = htons(PortNumber);
    sockAddr.sin_addr.s_addr = 0;
    auto result = socket(AF_INET, SOCK_STREAM, 0);

    if (result == INVALID_SOCKET)
    {
        auto err = WSAGetLastError();
        std::cout << "Unable to create listening socket on port " << PortNumber << "with error "  << err;
    }
    else std::cout << "No socket error \n";
}

在此处输入图像描述

4

1 回答 1

3

在进行任何套接字调用之前,您需要先对其进行初始化。

int iResult; 
// Initialize Winsock 
iResult = WSAStartup(MAKEWORD(2,2), &wsaData); 
if (iResult != 0) 
{ 
   printf("WSAStartup failed: %d\n", iResult); 
   return 1; 
}
于 2020-03-03T10:38:48.793 回答