免费注册 查看新帖 |

Chinaunix

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

一个socket问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-04 17:50 |只看该作者 |倒序浏览
我第一次写c++,实现一个服务是关于上传下载的。自己用windows api实现,现在有一个问题是我在本机上调试上传下载没有问题,但是当我分开在局域网两台机器上时,就会出错,我看了一下是server端循环发了几次(多于一次),但client接收次数不对,出现了丢失信息的情况。如果我在server发送前sleep一下就不会有问题,但这显然不是正确的方法,我该如何做呢????是不是setsockopt的那一项需要设置?希望赐教...

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2005-01-04 18:24 |只看该作者

一个socket问题

都没搞懂你用的是 TCP 还是 UDP

论坛徽章:
0
3 [报告]
发表于 2005-01-04 18:44 |只看该作者

一个socket问题

肯定是TCP了,你的状况是发送端发送太快,接收端接收太慢造成的。

论坛徽章:
0
4 [报告]
发表于 2005-01-04 18:57 |只看该作者

一个socket问题

[quote]原帖由 "yeath"]肯定是TCP了,你的状况是发送端发送太快,接收端接收太慢造成的。[/quote 发表:

TCP还用考虑这个问题吗?

论坛徽章:
0
5 [报告]
发表于 2005-01-04 18:57 |只看该作者

一个socket问题

肯定是TCP了,你的状况是发送端发送太快,接收端接收太慢造成的。

我也是这样考虑的,但不知该如何解决...

论坛徽章:
0
6 [报告]
发表于 2005-01-04 20:47 |只看该作者

一个socket问题

应该是UDP,网络接收速度一般都要比发送速度慢的,所以,不要全速的发送数据,否则肯定会有问题!

论坛徽章:
0
7 [报告]
发表于 2005-01-04 21:22 |只看该作者

一个socket问题

我是tcp传送文件呀,为什么“TCP还用考虑这个问题吗?”????
我是这么创建的socket,socket( AF_INET, SOCK_STREAM, IPPROTO_TCP )。谢谢...

论坛徽章:
0
8 [报告]
发表于 2005-01-05 09:17 |只看该作者

一个socket问题

对于连续的两次发送,另一个客户端可能会只收到合在一起的一串数据。
另外,一次发送的数据也可能会分成两次收到。

所以你应该这么做,在每个文件发送的最前面添加一个size字段,size字段后面跟着是数据内容。

论坛徽章:
0
9 [报告]
发表于 2005-01-05 09:28 |只看该作者

一个socket问题

Moonwellatg4  讲的很对,你收的时候代码呢?你最好以阻塞的方式,就省事了

论坛徽章:
0
10 [报告]
发表于 2005-01-05 14:40 |只看该作者

一个socket问题

因为TCP是无保护消息边界的,不像是UDP协议。UDP协议一次发送对应接收端一次接收。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP