TCP socket通信问题

ChenQi 发布于 2011/09/01 21:27
阅读 1K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

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

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

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

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

加载中
0
mallon
mallon
tcp把通信看作完整的流而不是一个一个的数据包,所以没有帧长的概念,这是初学者常犯的错误
hanxh
hanxh
看来我有点理解不透彻。我觉得tcp提供了阻塞方式就是这个概念吧?非阻塞方式的话,得操心发送了多少字节,但是阻塞方式的话,没都发送出去就是等同于失败吧?
ChenQi
ChenQi
ok:)
0
Jackarain
Jackarain


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

0
i
ibmo

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

0
周翼翼
周翼翼
该评论暂时无法显示,详情咨询 QQ 群:点此入群
ChenQi
ChenQi
Thank you:)
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部