gpt4 book ai didi

c++ - 为什么这个 C++ 代码不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:04 25 4
gpt4 key购买 nike

int Socket::Connect(const std::string& host, int port)
{

if(this->_connected)
throw "Socket is already connected";
// Get the IP from the string


hostent* ip = gethostbyname(host.c_str());

/*if(server == NULL)
throw strerror(WSAGetLastError());*/

// Information for WinSock.
sockaddr_in addr;
// Clear up the memory
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr = *((in_addr *)ip->h_addr);

// Try and connect
if(WSAConnect(this->_socket, (sockaddr *)&addr, sizeof(addr), NULL, NULL, NULL, NULL) != 0)
throw strerror(WSAGetLastError()); // this is being thrown but not caught?
this->_connected = true;
return 0;
}

错误是

“未知错误”

这是主要功能

int _tmain(int argc, _TCHAR* argv[])
{
try{


Socket* socket = new Socket();
if(socket->Connect("google.com", 80) == 0)
std::cout << "[-] connected..." << endl;

std::string line = socket->RecvLine();
std::cout << line << endl;
}
catch(char* errcstr)
{
std::cout << errcstr << endl;
}
catch(int err)
{
std::cout << err << endl;
}
catch(std::string errstr)
{
std::cout << errstr << endl;
}
catch(exception ex)
{
std::cout << ex.what() << endl;
}
system("pause");
return 0;
}

据我所知,它应该捕获任何异常。我怎样才能解决这个问题? (根本不应该有异常,因为它连接到 google.com 并且 winsock 已初始化等)

更新:错误实际上是在 WSAConnect 之后抛出的,但连接应该没有问题,并且由于某种原因我的 catch 语句都没有被使用。

更新 2:现在它捕获了错误,但它显示“未知错误”,这对我来说毫无用处。为什么它不能连接到谷歌?

已解决:谢谢!

最佳答案

strerror() 在 Windows 上返回一个 char*,所以你需要一个 catch(char* error)

关于c++ - 为什么这个 C++ 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com