【发布时间】:2016-08-12 19:42:40
【问题描述】:
要创建packet socket,使用socket() 函数调用(套接字类型和协议可能不同):
socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
要创建stream socket,使用以下调用:
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
我的问题是为什么在创建packet socket 时使用htons() 来指定协议,而不是在创建AF_INET or AF_INET6 系列的套接字时?为什么不使用
socket(AF_INET, SOCK_XXX, htons(IPPROTO_XXX))
在创建packet socket 时创建一个STREAM 或DATAGRAM 套接字,反之亦然。在对 socket() 函数的两个调用中使用的协议有什么不同,因为这两个调用都用于创建套接字,一个用于数据包套接字,另一个用于 TCP 级别的套接字?
【问题讨论】:
标签: sockets