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;                    //退出应用程序

}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭