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);