Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows win32套接字绑定函数失败,错误为10014 c++;_Windows_Sockets_C++11_Tcp - Fatal编程技术网

Windows win32套接字绑定函数失败,错误为10014 c++;

Windows win32套接字绑定函数失败,错误为10014 c++;,windows,sockets,c++11,tcp,Windows,Sockets,C++11,Tcp,我试图在我的机器上运行tcp服务器,这主要是一个教程代码,但由于某些原因绑定失败,出现错误10014。如果有人感兴趣,sizeof(serverAddr)在下面的代码中返回16。我知道错误10014是什么意思,但似乎无法理解为什么它会出现在bind上,一切似乎都正常 #include <iostream> #include <winsock2.h> #pragma comment(lib,"Ws2_32.lib") int main() { WSADATA W

我试图在我的机器上运行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;
}
#包括
#包括
#pragma注释(lib,“Ws2_32.lib”)
int main()
{
WSADATA WSADATA;
套接字服务器、客户端;
服务器中的SOCKADDR\u addr,clientAddr;
int-iResult=WSAStartup(MAKEWORD(2,2)和WSAData);
如果(iResult!=无错误){

std::cout偏执有一个错误。这一行:

if(绑定(服务器,(SOCKADDR*)&serverAddr,sizeof(serverAddr)!=0))
应该是:

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

论文有一个错误。这一行:

if(绑定(服务器,(SOCKADDR*)&serverAddr,sizeof(serverAddr)!=0))
应该是:

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