socket编程流程及函数详解-服务器端
一、创建socket
socket就是一个可读、可写、可控制、可关闭的文件描述符(整型数字)
// 函数原型
int socket(int domain, int type, int protocol)
//参数解释
domain:指定系统使用的协议。可以是TCP/IP协议族,也可以是UNIX协议族。分别对应的值为
PF_INET(IPv4)/PF_INET6(IPv6) 和 PF_UNIX。
type: 指明了服务的类型,有流服务和数据报服务,分别对应的参数为SOCK_STREAM、SOCK_UGRAM。
对于TCP/IP协议族来说,TCP是基于字节流的,因此传输层使用TCP,那么type要设置为.
SOCK_STREAM。UDP是基于数据报的协议,因此type的值对应为SOCK_UGRAM。
protocol:表示在前面两个参数的筛选下可以选择的协议,一般值为唯一的迷糊所有情况下,都将此值设置为0,表示默认协议。
return:socket调用成功返回一个socket文件描述符。失败返回-1,并设置errno。
二、命名socket
创建socket时,指定了使用哪个协议,就说明指定了地址族。但是没有指定该地址族中哪个具体的socket地址。这里我们可以理解,在我们的内核中,分为TCP/IP协议族、UNIX协议族等几大协议族,每个协议族有很多的socket,每个socket由一个具体的地址唯一的标识,当然,每个socket包含了相应(TCP/IP、UNIX协议