一、创建套接字
简要描述:
套接字的创建采用的是socket( )函数
源码:
SOCKET WSAAPI socket([in] int af,[in] int type,[in] int protocol);
参数:
- [in] af:地址族规范
- 当前支持的值为 AF_INET(IPv4) 或 AF_INET6(IPv6)
- [in] type:套接字的类型规范
- SOCK_STREAM:
- 一种套接字类型,通过OOB数据传输机制提供有序的、可靠的、双向的、基于连接的字节流。基于TCP得流式套接字。
- SOCK_DGRAM:
- 基于UDP协议的数据报套接字
- SOCK_RAW:
- 一种提供原始套接字的套接字类型,允许应用程序操作下一个上层协议标头。
- 💡待补充……
- SOCK_STREAM:
- [in] protocol:
- 要使用的协议。协议参数的可能选项特定于指定的地址族和套接字类型。
- 如果指定值为 0,则调用者不希望指定协议,服务提供者将选择要使用的协议。
- 💡在TCP流式套接字编程中默认写0。
返回值:
- 如果没有发生错误, 套接字返回一个引用新套接字的描述符。否则,返回一个 INVALID_SOCKET 值,并且可以通过调用WSAGetLastError来检索特定的错误代码 。
二、绑定地址
简要描述:
bind 函数将本地地址与套接字相关联。
源码:
int WSAAPI bind([in] SOCKET s,[in] const sockaddr *name,[in] int namelen);
参数:
- [in] s
- 标识未绑定套接字的描述符。
- [in] name
- 指向要分配给绑定套接字的本地地址的sockaddr结构的指针。
- [in] namelen
- name参数指向的值的长度(以字节为单位)。
返回值:
- 如果没有发生错误, bind返回零。否则,它返回 SOCKET_ERROR,并且可以通过调用WSAGetLastError检索特定的错误代码 。
三、连接套接字
3.1、客户端连接套接字
简要描述:
connect 函数建立到指定套接字的连接。
源码:
int WSAAPI connect([in] SOCKET s,[in] const sockaddr *name,[in] int namelen);
参数:
返回值:
- 如果没有发生错误,connect返回零。否则,它返回 SOCKET_ERROR,并且可以通过调用WSAGetLastError检索特定的错误代码 。
3.2、服务端连接套接字
简要描述:
accept 函数允许在套接字上进行传入连接尝试。
**
参数:SOCKET WSAAPI accept([in] SOCKET s,[out] sockaddr *addr,[in, out] int *addrlen);
四、监听套接字
简要描述:
listen 函数将套接字置于侦听传入连接的状态。
源码:
int WSAAPI listen([in] SOCKET s,[in] int backlog);
参数:
- [in] s
- 标识绑定的未连接套接字的描述符。
- [in] backlog
- 待处理连接队列的最大长度。一般设置为5.
返回值:
- 如果没有发生错误, listen返回零。否则,返回SOCKET_ERROR的值,并且可以通过调用WSAGetLastError检索特定的错误代码 。
五、数据传输
5.1、发送数据——send
简要描述:
send 函数在连接的套接字上发送数据。
**
int WSAAPI send([in] SOCKET s,[in] const char *buf,[in] int len,[in] int flags);
参数:
- [in] s
- 标识已连接套接字的描述符。
- [in] buf
- 指向包含要传输的数据的缓冲区的指针(char *)。
- [in] len
- buf参数指向的缓冲区中数据的长度(以字节为单位)。
- [in] flags
- 一组指定调用方式的标志。此参数是通过将按位 OR 运算符与以下任何值一起使用来构造的。
返回值:
- 如果没有发生错误, send返回发送的总字节数,可以小于len参数中请求发送的字节数。否则,返回 SOCKET_ERROR 的值,并且可以通过调用WSAGetLastError检索特定的错误代码 。
-
5.2、数据接收——recv
简要描述:
recv 函数从已连接的套接字或绑定的无连接套接字接收数据。
**int WSAAPI recv([in] SOCKET s,[out] char *buf,[in] int len,[in] int flags);
参数:
[in] s
- 标识已连接套接字的描述符。
- [out] buf
- 指向接收传入数据的缓冲区的指针。
- [in] len
- buf参数指向的缓冲区的长度(以字节为单位)。
- [in] flags
- 一组影响此函数行为的标志。请参阅下面的注释。有关此参数可能值的详细信息,请参阅备注部分。
返回值:
如果没有错误发生, recv返回接收到的字节数,buf参数指向的缓冲区将包含接收到的数据。如果连接已正常关闭,则返回值为零。
