我正在将linux套接字库转换为Windows,但是winsock没有hstrerror()
函数。 hstrerror()
将采用h_errno
并吐出一个错误字符串。我认为类似于 panic 。我环顾四周,但没人真正说出要替换的内容。除了“已弃用,而改为使用getaddrinfo()
或getnameinfo()
”之外,我没有发现任何有关替换hstrerror的内容。具体来说,我有一个使用它的异常类。代码如下:
//
// class socket_h_error
// subclass to record status of extern int h_errno variable
//
class socket_h_error : public socket_error {
public:
int host_errno;
//TODO: replace hstrerror()
explicit socket_h_error(const string& what) :
socket_error(what + ": " + hstrerror(h_errno)),
host_errno(h_errno) {}
};
我确实必须替换
strerror()
,但是我没有提到有可能替换hstrerror()
。它在winsock2库中也不存在,因此我没有MS提出建议。 最佳答案
使用WSAGetLastError()和FormatMessage()。
MSDN中所有与Winsock相关的功能中都明确提到了WSAGetLastError()。