C ++ IRC套接字无法连接。错误10014

时间:2013-12-14 17:33:30

标签: c++ sockets irc

我正在尝试用C ++创建一个小的IRC库。 使用RAW套接字时,似乎无法连接。

它远未完成 - 因此只有两个功能。

以下是代码:

#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");
}

非常感谢帮助 - 我完全陷入了困境。 连接问题在这里:

while(connect(sock, (sockaddr *) &sockAddr, sizeof(&sockAddr)) == SOCKET_ERROR)

所以我假设问题在

void Bot::Connect(const char* servername, int port, const char* nick)

修改:
如果我改变

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

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

我现在得到错误代码10014(现在它不会遮挡成员变量)

0 个答案:

没有答案