4.6.2 创建套接字

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

         }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值