Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets TCP与ip的关系;SOCK_流和UDP&;短袜_Sockets_Unix_Network Protocols - Fatal编程技术网

Sockets TCP与ip的关系;SOCK_流和UDP&;短袜

Sockets TCP与ip的关系;SOCK_流和UDP&;短袜,sockets,unix,network-protocols,Sockets,Unix,Network Protocols,SOCK\u STREAMinternet套接字是否始终使用TCP 和SOCK_DGRAM是否始终使用UDP 换句话说,这些夫妇的要素之间是否存在1:1的对应关系: SOCK\u流&TCP SOCK_DGRAM&UDP ?否。 SOCK\u流只表示套接字是字节流。由于TCP使用字节流,因此创建TCP套接字的是SOCK_STREAM与IPPROTO_TCP的组合 SOCK_DGRAM仅表示套接字使用数据报。由于UDP使用数据报,因此创建UDP套接字的是SOCK_DGRAM与IPPROTO_UD

SOCK\u STREAM
internet套接字是否始终使用TCP

SOCK_DGRAM
是否始终使用UDP

换句话说,这些夫妇的要素之间是否存在1:1的对应关系:

  • SOCK\u流
    &TCP
  • SOCK_DGRAM
    &UDP

否。
SOCK\u流
只表示套接字是字节流。由于TCP使用字节流,因此创建TCP套接字的是
SOCK_STREAM
IPPROTO_TCP
的组合

SOCK_DGRAM
仅表示套接字使用数据报。由于UDP使用数据报,因此创建UDP套接字的是
SOCK_DGRAM
IPPROTO_UDP
的组合

当调用
socket()
并将
protocol
参数设置为0时,
IPPROTO\u TCP
SOCK\u流的默认值,
IPPROTO\u UDP
SOCK\u DGRAM
的默认值。但是,如果需要,没有任何东西可以阻止其他套接字协议使用
SOCK_-STREAM
SOCK_-DGRAM
。例如,在某些平台上,您可以将
IPPROTO_ICMP
SOCK_DGRAM
一起使用,以替代将
IPPROTO_ICMP
SOCK_RAW
一起使用(
SOCK_RAW
需要管理员权限,但
SOCK_DGRAM
不需要管理员权限)