AF_INET是 Linux 系统中的一个网络协议族常量,它代表 IPv4 网络协议。在 Linux 中,网络编程通常会涉及到套接字(socket)的使用,而套接字可以通过指定不同的协议族来进行网络通信。 基础概念 协议族(Protocol Family):是一组协议的集合,这些协议共同工作以实现网络通信。常见的协议族包括AF_INET(IPv4)、AF_INET6...
AF_INET 表示一个 Internet 地址簇,它使用的是一个流 socket,定义为 SOCK_STREAM(如此处的 inetsw_array 所示)。 注意在 图 3 中,proto 结构定义了传输特有的方法,而 proto_ops 结构则定义了通用的 socket 方法。可以通过调用 inet_register_protosw 将其他协议加入到 inetsw 协议中。例如,SCTP 就是通过调用...
sock = socket(PF_INET, SOCK_STREAM, 0); 然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。 相关头文件中的定义:AF = Address Family PF = Protocol Family AF_INET =PF_INET 所以在windows中AF_INET与PF_INET完全一样.而在Unix/Linux系...
域(domain)指定了套接字通信所用到的协议族,最常用的域是AF_INET,代表网络套接字,底层协议是IP协议。对于网络套接字,由于服务器端有可能会提供多种服务,客户端需要使用IP端口号来指定特定的服务。AF_UNIX代表本地套接字,使用Unix/Linux文件系统实现。 IP协议提供了两种通信手段:流(streams)和数据报(datagrams)...
AF_INET:使用IPv4 TCP/IP协议 AF_INET6:使用IPv6 TCP/IP协议 参数_type表示套接字的类型,可以有如下取值: SOCK_STREAM:创建一个TCP套接字 SOCK_DGRAM:创建UDP套接字 SOCK_RAM:创建一个原始套接字 参数_protocol通常设置为0,表示通过参数_domain制定的协议族和参数_type指定的套接字类型来确定使用的协议。当...
sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd<0) { perror("socket"); exit(-1); } 1. 2. 3. 4. 5. 6. 7. 套接字地址 每个套接字(端点)都有其自己的地址格式,对于 AF_UNIX 套接字来说,它的地址由结构 sockaddr_un 来描述,该结构体定义在头文件 sys/un.h 中,如下: ...
AF_INET_IPv4:因特网域; AF_INET6_IPv6因特网域; AF_UNIX:Unix域; AF_ROUTE路由套接字; AF_KEY密钥套接字; AF_UNSPEC:未指定; (2)type (3)protocol (4)返回值:sockfd,进程空间内的socket标识。sockfd是socket标识。 (5)port:端口号,是Linux内核分配给应用程序的标识号,它是本地应用程序的标识。
unsignedshortint sa_family;//调用socket()时的domain参数,即AF_INET值。 char sa_data[14];//最多使用14个字符长度 }; //此sockaddr结构会因使用不同的socket domain而有不同结构定义, 例如使用AF_INET domain,其socketaddr结构定义便为: struct sockaddr_in //常用的结构体 ...