TCP数据包和TCP流的问题

z5253882 2017-12-21 12:10:03
假设服务器和客户端用的TCP协议,然后自己在TCP上又封装了一个自定义的协议头A,数据格式就是: ip | tcp | A | data 这样的情况。
服务器一直给客户端发送以上模式的数据。
如果是UDP,那发一个包,收一个包,我能理解。
但是TCP不是说是流吗,也就是说有可能一次发送就是我send的数据,有可能一次发送多个send的数据,有可能将一个send的数据拆分成几次发送,对吗?用wireshark抓包下来的数据,一定是每个TCP数据包里都是满足我自定义格式的这种单条数据,还是可能单条数据也会被分开在几个TCP数据包里,或者几条自定义的数据在一个TCP数据包里?
...全文
418 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-12-22
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
z5253882 2017-12-22
  • 打赏
  • 举报
回复
谢谢大家帮忙解答。
z5253882 2017-12-21
  • 打赏
  • 举报
回复
越来越晕了。 所谓流,具体一点。 客户端和服务器建立了一个TCP的socket连接。 服务器往客户端发了一个文件,文件发送完以后并没有断开,依旧保持连接。 那流到底是这个socket连接(文件发完还没有结束),还是文件发完流就结束了,还是这两个都是错的?
和蔼的张超 2017-12-21
  • 打赏
  • 举报
回复
自己写的通讯协议在发送数据的时候每一次发送的数据都要是完整的一套,数据可以分多次发送,但是每次发送都要有数据头。接收数据时,可能会数据粘包要把数据接收到队列中在处理。
smwhotjay 2017-12-21
  • 打赏
  • 举报
回复
tcp 自己分。不然数据偶尔连着的,必须自己分
xian_wwq 2017-12-21
  • 打赏
  • 举报
回复
既然是流,就没有边界的概念 根据系统及网络相关条件,可能会攒包发送,也可能切分后发送。 如果网络条件好(比如在局域网),发送数据量很小,可能并不明显; 如果网络条件较差(如在公网),发送数据量较大, 则出现“粘包”现象是必然的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧