创建套接字(Socket)对象

无论是使用哪种协议,无论是客户端还是服务端,在使用Socket进行通信之前,首先要完成Winsock库的初始化工作,之后应该创建Socket对象,用它进行网络通信。使用Socket这个API函数可以完成该功能,函数原型如下。

SOCKET socket(
 int af,    //指定套接字使用的地址格式
 int type,   //套接字类型
 int protocol //套接字协议类型
);

第一个参数af用来指定套接字使用的地址格式,对于Windows下的Winsock库所支持的地址族值为AF_INET。

第二个参数type用来指定套接字的类型,通常有如下类型。

SOCK_STREAM //流套接字,TCP协议使用的有连接的可靠传输类型
SOCK_DGRAM  //数据报套接字,UDP使用的无连接的不可靠的传输类型

第三个参数protocol用来指定Socket对象所使用的协议类型,通常有如下类型。

IPPROTO_TCP  //TCP协议
IPPROTO_UDP //UDP协议

然而当type为SOCK_STREAM值时,就指明是用于TCP协议,为SOCK_DGRAM值时,就指明是用于UDP协议。所以这两种情况下protocol参数可以是0。函数执行成功则返回一个socket对象,否则返回INVALID_SOCKET(-1),可以使用WSAGetLastError函数获得错误代码。

原文地址:https://www.cnblogs.com/cyx-b/p/12530090.html