免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 问号
打印 上一主题 下一主题

关于TCP有序传输的问题 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
11 [报告]
发表于 2003-02-18 15:23 |只看该作者

关于TCP有序传输的问题

1字节问题,那你就做多次接受。

同时收到多个消息,需要你自己定义应用报文的协议格式,接受方对数据做解析。

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

关于TCP有序传输的问题

[quote]原帖由 "问号"]不过有些问题,比如,发送端正确发送了长度消息和真正的消息,而接收端一次接收,只收到了1个字节,那么就意味着发送端发送的这一组消息都作废了.[/quote 发表:

我晕!

论坛徽章:
0
13 [报告]
发表于 2003-02-18 23:34 |只看该作者

关于TCP有序传输的问题

[quote]原帖由 "问号"]对,考虑的问题的确很少,我现在是在广域网环境里面,就必须要考虑到最坏情况,就是接收到1字节的情况,还有就是同时接收到一堆消息的情况。[/quote 发表:


重新考虑了一下,这是我比较笨的表现了 我的新想法是在客户连接服务器后,马上发送一个同步消息,服务器收到后马上给客户端一个反馈,客户端收到后,就表示双方可以发送消息了,接下来只要写一个比较好的消息解释就可以。

然后,客户端定时或者定量的发送一次同步消息,避免网络传输中的错误,放弃一部分错误的消息,重新开始。

大家看看,觉得我这个方法还可以吧

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

关于TCP有序传输的问题

楼上的这位大哥!你以为 TCP 是干啥吃的?你说的这些工作 TCP 早就替你做了!
要是在 UDP 下倒是可以试一下。

论坛徽章:
0
15 [报告]
发表于 2003-02-21 01:52 |只看该作者

关于TCP有序传输的问题

这个我当然知道。不过现在的问题就是,我现在使用非阻塞的段口,recv会立即返回,不管收到多少,不能保证一次就能收到对方send过来的全部内容,所以我认为必须在上一层做一个接受缓存的判断处理。

至于之前我说的同步信息,的确不需要了。

如果我还在钻牛角尖的话,请告诉我,谢谢:)

论坛徽章:
0
16 [报告]
发表于 2003-02-21 09:17 |只看该作者

关于TCP有序传输的问题

那你可以使用一个接收缓冲区

并有一个专门的接收线程

接收线程把接收到的内容放到接收缓冲区

其它函数从接收缓冲区读就是

论坛徽章:
0
17 [报告]
发表于 2003-02-21 17:05 |只看该作者

关于TCP有序传输的问题

我来总结一下:

1: Server A send 的所有内容都保存在Server B 的Buffer 中(当然有长度限制)。

2: Server B 上的Recv nonblock 顺序读取Buffer 中的内容。不管你怎么Recv. 都是一个一个接着读。

3: 正常情况下, 不会有数据在网络传输时丢失。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP