【问题标题】:winsock client socket is invalidwinsock 客户端套接字无效
【发布时间】:2016-03-20 10:08:39
【问题描述】:

我想连接到一个特定的服务器,这个客户端代码使用winsock。 但是创建的套接字无效的,所以我得到“INVALID SOCKET”

//Creating a socket for connecting to server
SOCKET hSocket;
hSocket = socket(AF_INET, SOCK_STREAM,0);
if (hSocket == INVALID_SOCKET)   //this is true!
{
    cout << "INVALID SOCKET" << endl;
}

/* This code assumes a socket has been created and its handle
is stored in a variable called hSocket */
sockaddr_in sockAddr;

sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(54123);
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

// Connect to the server
if (connect(hSocket, (sockaddr*)(&sockAddr), sizeof(sockAddr)) != 0)
{
    cout << "ERROR while connecting" << endl;
}

【问题讨论】:

    标签: c++ sockets client-server winsock


    【解决方案1】:

    我能想到的唯一问题是你没有WSAStartup()winsock。 如果您没有,请检查https://msdn.microsoft.com/en-us/library/windows/desktop/ms742213%28v=vs.85%29.aspx。您也可以使用WSAGetLastError 来查看问题所在。

    在代码顶部添加:

    WSADATA wsaData;
    
    //activate ws2_32.lib
    int res = WSAStartup(MAKEWORD(2, 0), &wsaData);
    if (res == 0){
        cout << "WSAStartup successful" << endl;
    }
    else {
        cout << "Error WSAStartup" << endl;
        return -201;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多