关键字: 通用socket理论
-socket:分配最小的未用socket句柄;
-bind:将socket句柄与本地或远地地址相关联;
-getsockname和getpeername:分别确定socket所连接的本地或远地地址;
-close:释放socket句柄,使它可用于后面的复用。
连接建立和连接终止:socket接口为建立和终止连接提供以下函数:
-connect:客户通常使用connect来主动地与服务器建立连接;
-listen:服务器使用listen来指示它想要被动地侦听进入的客户连接请求;
-accept:服务器使用accept来创建新的通信端点,以为客户服务;
-shutdown:有选择地终止一个双向连接的读端和/或写端流。
数据传输机制:socket接口提供以下函数来发送和接收数据:
-read/write:通过特定句柄接收和传输数据缓冲区;
-send/recv:与read/write类似,但它们提供一个额外的参数来控制特定的socket特有操作(比如交换“紧
急”数据,或“偷看”接收队列中的数据,而又不把它从队列中移除);
-sendto/recvfrom:交换无连接数据报;
-readv/writev:分别支持“分散读”和“集中写”语义(这些操作优化用户/内核模式切换并简化内存管
理);
-sendmsg/recvmsg:通用函数,包含了所有其他数据传输函数的行为。对于UNIX域的socket,sendmsg
和recvmsg函数还提供在同一主机的任意进程间传递“访问权限”(比如打开文件句柄)的能力。
注意这些接口也可被用于其他类型的I/O,比如文件和终端。
选项(option)管理:socket接口定义以下函数,允许用户改变socket行为的缺省语义:
-setsockopt和getsockopt:修改或查询在协议栈不同层次中的选项。选项包括多点传送、广播,以及设
置/获取发送和接收传输缓冲区的大小;
-fcntl和ioctl:是UNIX系统调用,使在socket上能够进行异步I/O、非阻塞I/O,以及紧急消息递送。
除了上面描述的socket函数,通信软件还可使用以下标准库函数和系统调用:
-gethostbyname和gethostbyaddr:处理网络寻址的多种情况,比如映射主机名到IP地址;
-getservbyname:通过服务的端口号或人类可读的名字来对它们进行标识;
-ntohl、ntohs、htonl、htons:执行网络字节序转换;
-select:在成组的打开的句柄上执行基于I/O和基于定时器的事件多路分离。
阅读(737) | 评论(0) | 转发(0) |