4.4.2 创建套接字

  socket()函数实现创建套接字的功能。当创建套接字时,需要向该函数传递“地址家族”、“套接字类型”和“协议类型”三个参数。Windows Socket定义AF_INETIP地址家族,所以该函数的第一个参数必须为AF_INET。该程序用TCP协议打开套接字,所以设置第二个参数为SOCK_STREAM。第三个参数为协议类型,设置为IPPROTO_TCP。在第一个和第二个参数确定的情况下,第三个参数可以设置为0

通常Windows Sockets API调用失败时返回SOCKET_ERROR错误代码。但该函数调用失败时,返回INVALID_SOCKET错误代码。

创建套接字的程序清单如下。

sServer= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(INVALID_SOCKET == sServer)

{

         return HandleSocketError("Failed socket()!");

}

 

套接字SOCKET定义为无符号的整数,可以取从0INVALID_SOCKET-1之间的任意值。SOCKET_ERRORSOCKET_ERROR的定义如下。

#define INVALID_SOCKET  (SOCKET)(~0)

#define SOCKET_ERROR            (-1)

当该函数调用失败时,调用HandleSocketError()函数显示调用失败的消息。然后,卸载Windows Sockets DLL,释放内存,程序退出。该函数程序清单如下。

/*

 *      错误处理

 */

int              HandleSocketError(char *str)

{

         ShowSocketMsg(str);                                    //显示错误消息 

         WSACleanup();                                                        //卸载Windows socket DLL     

         return SERVER_API_ERROR;                    //退出应用程序

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值