流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较

Posted givemelove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较相关的知识,希望对你有一定的参考价值。

1.流式套接字

使用这种套接字时,数据在客户端是顺序发送的,并且到达的顺序是一致的。比如你在客户端先发送1,再发送2,那么在服务器端的接收顺序是先接收到1,再接收到2,流式套接字是可靠的,是面向连接的;

2.数据报套接字

这种套接字是无连接的,数据是打包成数据包发送的,到达的顺序不一定与发送的顺序是一致的,并且数据不一定是可达的,并且接收到的数据还可能出错。

既然这样那为什么还要使用这种套接字呢?因为现每个使用udp的程序都有自己的对数据进行确认的协议。如TFTP协议规定了每收到一个消息比如, TFTP 协议定义了对于每一个发送出去的数据包,远程在接受到之后都要回送一个数据包告诉本地程序:    “我已经拿到了!(一  ”个 “ACK” 包)    。如果数据包发的送者在 5 秒内没有的得到回应,它就会重新发送这个数据包直到数据包接受者回送了 “ACK” 信号。这些知识对编写一个使用 UDP 协议的程序员来说是非常必要的。

以上是关于流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较的主要内容,如果未能解决你的问题,请参考以下文章

套接字通信

Python网络编程—socket套接字编程(UDP)

Python网络编程—socket套接字编程(TCP)

原始套接字

socket套接字编程 HTTP协议

网络编程基础