TCP socket通信问题

发布于 2021-11-06 17:59:14 字数 196 浏览 817 评论 6

看到TCP通信物理帧的长度是46---1500.

那么如果用户数据比较大(比如50K),那么用TCP通信的时候系统会怎么处理呢?

如果我用socket函数,如send,recv,write,read等进行数据的发送和读取,它能一次读完么?还是说一次性可能会读不完,需要你主动的去编写读完的条件?

应用层以下数据会进行拆分和重组么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

彼岸花ソ最美的依靠 2021-11-10 23:13:10

Thank you:)

葬花如无物 2021-11-10 23:12:52

对用户来说,使用socket的相关函数,就跟操作一般的文件一样,用户把要发送或接受的数据看作数据流。至于数据包的创建,重组,拆分等操作操作系统已经帮我们完成了,用户唯一要做的只是判断相关的函数执行是否成功。

路还长,别太狂 2021-11-10 23:11:59

tcp协议栈为你完成了数据包重组.
send,recv,write,read完全有可能接收或发送不完整, 需要判断返回值, 继续发送或接收.

孤檠 2021-11-10 23:09:52

ok:)

反话 2021-11-10 22:54:27

看来我有点理解不透彻。我觉得tcp提供了阻塞方式就是这个概念吧?非阻塞方式的话,得操心发送了多少字节,但是阻塞方式的话,没都发送出去就是等同于失败吧?

网名女生简单气质 2021-11-10 22:26:13

tcp把通信看作完整的流而不是一个一个的数据包,所以没有帧长的概念,这是初学者常犯的错误

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文