当socket()函数返回INVALID_SOCKET时,调用ShowErrorMsg()函数显示调用失败的原因。创建套接字程序清单如下。
//创建Windows socket
sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(INVALID_SOCKET == sHost)
{
ShowErrorMsg(); //显示错误信息
WSACleanup(); //释放资源
return CLIENT_API_ERROR; //退出
}
在ShowErrorMsg()函数中,以WSAGetLastError()函数的返回值为参数,调用FormatMessage()函数,获得错误的文本字符串。
ShowErrorMsg函数程序清单如下。
/*
* 显示错误信息
*/
void ShowErrorMsg(void)
{
int nErrCode = WSAGetLastError();//获取错误代码
HLOCAL hlocal = NULL;
//获取错误的文本字符串
BOOL fOk = FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, nErrCode, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
(PTSTR)&hlocal, 0, NULL);
//显示错误信息
if (hlocal != NULL)
{
MessageBox(NULL, (char*)LocalLock(hlocal), "CLIENT ERROR", MB_OK);
LocalFree(hlocal);
}
}
本文介绍在Windows环境下使用socket创建套接字时如何处理失败情况,并通过ShowErrorMsg函数展示具体的错误信息。
4697

被折叠的 条评论
为什么被折叠?



