gpt4 book ai didi

sockets - "stream-type"套接字和 "datagram"套接字类型有什么区别?

转载 作者:行者123 更新时间:2023-12-02 12:57:43 25 4
gpt4 key购买 nike

“流类型”套接字和“数据报”套接字类型有什么区别?

最佳答案

简短的回答:消息边界和连接。

使用流套接字,您可以写入两条 5 字节消息并最终读取一条 10 字节消息。这是因为您写入的数据只是放入单个流中,写入的数据之间没有边界。这就像一次向文件写入一个单词一样。作为文件的阅读者,您如何知道作者最初是否一次向文件写入一个字符、一次一个单词、一次一句话、一次一段或一次写入整个文件?基本上,如果文件已经写入,则不需要。对于流,如果发送是快速连续完成的,您如何知道源发送了两条 5 字节消息或一条 10 字节消息?您必须有某种长度或分隔符来帮助指示消息边界。有时您不关心消息或其边界。其他时候,您添加应用程序级数据(例如 header 、分隔符、预定义的消息长度等)。这使得流套接字也可用,因为您自己处理消息传递(即在应用程序层)。

使用基于数据报的套接字,接收方知道发送方发送的消息的大小,因为它们以 1:1 的比例传送(避免丢失、重复等...),并保留其原始大小。

除此之外,基于流的套接字往往是面向连接的和 1:1,而数据报套接字是无连接的,并且可能是一对(源)对多(接收者),具有广播/多播。

关于sockets - "stream-type"套接字和 "datagram"套接字类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com