C++ IRC套接字无法连接。错误10014 我试图在C++中创建一个小IRC库。 当使用原始套接字时,它似乎无法连接

C++ IRC套接字无法连接。错误10014 我试图在C++中创建一个小IRC库。 当使用原始套接字时,它似乎无法连接,c++,sockets,irc,C++,Sockets,Irc,它还远没有完成,因此只有两个功能 代码如下: #include <iostream> #include <winsock2.h> using namespace std; class Bot { SOCKET sock; public: void Init(); void Connect(const char* servername, int port, const char* nick); }; void Bot::Init() {

它还远没有完成,因此只有两个功能

代码如下:

#include <iostream>
#include <winsock2.h>
using namespace std;

class Bot
{
    SOCKET sock;
public:
    void Init();
    void Connect(const char* servername, int port, const char* nick);
};

void Bot::Init()
{
    WSADATA WSAData;
    if(WSAStartup(MAKEWORD(2, 0), &WSAData) != 0)
    {
        cout << "ERROR: Failed WSAStartup" << endl;
    }
    SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(sock == INVALID_SOCKET)
    {
        cout << "ERROR: Invalid Socket\n";
    }
}

void Bot::Connect(const char* servername, int port, const char* nick)
{
    hostent* host;
    host = gethostbyname(servername);
    sockaddr_in sockAddr;
    sockAddr.sin_family = AF_INET;
    sockAddr.sin_port = htons(port);
    sockAddr.sin_addr.S_un.S_addr = ((in_addr *)(host->h_addr))->s_addr;
    while(connect(sock, (sockaddr *) &sockAddr, sizeof(sockAddr)) == SOCKET_ERROR)
    {
        cout << "ERROR: Can't connect to Socket.\n"; //This is the problem
        Sleep(10000.0);
    }
}

int main()
{
    Bot bot;
    bot.Init();
    bot.Connect("wolfe.freenode.net", 6777, "nick");
}
所以我假设问题出在

void Bot::Connect(const char* servername, int port, const char* nick)
编辑: 如果我改变

SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);


我现在得到错误代码10014,它现在不会对成员变量进行阴影处理

连接失败后,errno/GetLastError/whatever返回什么?名称解析成功吗?它是否返回空指针?您不能忽略系统调用中可能出现的错误。你用过调试器吗?如果你用过调试器,你发现了什么?GetLastError返回10038no我想你是在隐藏成员变量。将其保留为sock,但移除sock?
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);