用这个系列在记录自己的C 网络编程之路。
首先,网络编程必然离不开socketAPI函数,大多数 Socket API 都源于BSD Socket (即伯克利套接字(Berkeley Sockets)),因此这些 socket 函数在不同的平台有着相似的签名和参数。
### 常用的socketAPI函数
函数名称 | 函数简单描述 | 附加说明 |
---|---|---|
socket | 创造某种类型的套接字 | |
bind | 将一个 socket 绑定一个ip与端口的二元组上 | |
listen | 将一个 socket 变为侦听状态 | |
connect | 试图建立一个 TCP 连接 | |
accept | 尝试接收一个连接 | |
send | 通过一个socket发送数据 | |
recv | 通过一个socket收取数据 | |
select | 判断一组socket上的读事件 | |
gethostbyname | 通过域名获取机器地址 | |
close | 关闭一个套接字,回收该 socket 对应的资源 | Windows 系统中对应的是 closesocket |
shutdown | 关闭 socket 收或发通道 | |
setsockopt | 设置一个套接字选项 | |
getsockopt | 获取一个套接字选项 |
以上只是最常用的一部分socket 函数,在类Unix系统中,我们可以使用相关的工具查看它的用法。具体而言,我们想要查看bing函数的方法,只需要在 shell 终端输入 man bind
如上面的代码片段所示,man手册对于一个函数的说明一般包括如下几部分:
- 函数声明及相关数据结构所在的头文件,你实际编码时如果需要使用这个函数必须包含该头文件;
- 函数的签名,即该函数的参数类型、个数和返回值;
- 函数用法说明,并可能包括一些注意事项;
- 函数返回值说明;
- 调用函数出错可能得到的错误码值;
- 一些相关函数在 man 手册的位置索引。(connect 没有这个部分)