免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 10656 | 回复: 34
打印 上一主题 下一主题

tcp发送于接收数据问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-20 20:53 |只看该作者 |倒序浏览
我往一个socket里,用了write两次。
怎么用一次read就把这两次的数据都接收到了?

我想分两次接收怎么办?

请大家多多指教!

论坛徽章:
0
2 [报告]
发表于 2003-04-20 23:35 |只看该作者

tcp发送于接收数据问题?

原帖由 "kesine" 发表:
我往一个socket里,用了write两次。
怎么用一次read就把这两次的数据都接收到了?

我想分两次接收怎么办?

请大家多多指教!


可以定义自己的报文格式,举个例子,每次write的报文格式为:
     4位报文长度+报文正文,其中4位报文长度=length(报文正文)+4,
假设一个报文为  "00140123456789", 报文正文为"0123456789",
接收方接收一个报文要read()两次,第一次read() 读4个字节,
可以得到报文正文的长度为 14 - 4 =  10,
然后第二次read() 只要读 10 个字节就可以得到报文的正文 "0123456789"。
不知道这样合不合你用。

论坛徽章:
0
3 [报告]
发表于 2003-04-21 07:27 |只看该作者

tcp发送于接收数据问题?

这样不行,因为我不知道第一次应该收多少字节。就是说每次发过来的数据长度是不确定的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2003-04-21 10:19 |只看该作者

tcp发送于接收数据问题?

你到底要发什么?肯定有办法可以确定的!尽管可能不是定长!

论坛徽章:
0
5 [报告]
发表于 2003-04-21 10:35 |只看该作者

tcp发送于接收数据问题?

[quote]原帖由 "kesine"]这样不行,因为我不知道第一次应该收多少字节。就是说每次发过来的数据长度是不确定的。[/quote 发表:



说说双方的接口是怎么定义的,或者报文格式是怎么样的。

论坛徽章:
0
6 [报告]
发表于 2003-04-21 10:37 |只看该作者

tcp发送于接收数据问题?

将要收到的数据的长度是不知道。但是对每一次收到的数据(一帧)的格式是知道的。
write两次,我就认为发了两帧。所以我也要收两帧,才能确定每一帧的格式,即里面的具体内容。如果两帧当作一帧收了,我就不知道帧的格式了,或者说我就会认为丢了一帧。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2003-04-21 10:39 |只看该作者

tcp发送于接收数据问题?

我靠!有什么好保密的?说出来大家听听不就明白了?一会儿我还有一个会议,如果说迟了恐怕就帮不上你了。

论坛徽章:
0
8 [报告]
发表于 2003-04-21 10:47 |只看该作者

tcp发送于接收数据问题?

协议没有什么好保密的,只不过稍微复杂了点。而且对解决这个问题没有什么帮助。
协议总体结构为:帧类型+帧内容长度+帧内容。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2003-04-21 10:52 |只看该作者

tcp发送于接收数据问题?

这不就结了?
先接收帧类型和帧内容长度,然后根据帧内容长度接收帧内容,如果有剩下的则认为是第二帧。你分多少次收都行。
记住:
在有些时候,收包和解包可能不是同一个过程。

论坛徽章:
0
10 [报告]
发表于 2003-04-21 11:07 |只看该作者

tcp发送于接收数据问题?

这样做似乎可行,不过麻烦点。
我想要是能够实现发送的此数和接受的次数对应就好了,而不要管每次收多少数据。只要保证每次收的时候能把发送的数据都收到就行。
有可能实现吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP