免费注册 查看新帖 |

Chinaunix

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

不知道大家有没有遇到这样一个 send的问题. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-05-11 10:42 |只看该作者
检查了又有什么用啊? 包已经发出去了.

2006-04-19|66.66.66.6|218.25.154.11|tcp|22|42451|SSH
2006-04-19|218.25.154.3|218.25.154.11|tcp|22|4869|SSH
2006-04-19|60.191.244.43|218.25.154.11|tcp|22|57823|SSH
2006-04-19|218.25.154.7|218.25.154.11|tcp|22|51888|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|56016|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|44742|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|44902|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|45049|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|45162|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|45290|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|22|45437|SSH
2006-04-19|148.228.20.22|218.25.154.11|tcp|2
2|45598|SSH
2|45754|SSH
2|45913|SSH
2|46074|SSH
2|46230|SSH
2|46379|SSH
2|46533|SSH
2|46692|SSH
2|46849|SSH
2|46964|SSH
2|47088|SSH
2|47250|SSH

总是这样. 这是从客户端那边得到的,在屏幕上的显示.开始的数据都对.后来的就错了.服务器那边没有任何报错.

论坛徽章:
0
12 [报告]
发表于 2006-05-11 10:59 |只看该作者
n = send(fd,buf,strlen(buf),0);
        if(n < 0 || n!=strlen(buf))
            perror("send");

论坛徽章:
0
13 [报告]
发表于 2006-05-11 11:13 |只看该作者
而且 再每次调用send后.

usleep(500000); 后客户端收到的数据就正常了. 为什么???到底问题出在那?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2006-05-11 11:20 |只看该作者
原帖由 wingger 于 2006-5-9 09:57 发表
TCP 是无边界的,receive 应该循环接受,并且自定义边界。

再说一遍。

论坛徽章:
0
15 [报告]
发表于 2006-05-11 12:39 |只看该作者
原帖由 wingger 于 2006-5-11 11:20 发表

再说一遍。


recv 是循环接收的.而且有边界. buf 128的.
但是还是不好用.

那能解释一下为什么我 sleep了一下 那边就好了呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2006-05-11 12:44 |只看该作者
原帖由 kernel.org 于 2006-5-11 12:39 发表


recv 是循环接收的.而且有边界. buf 128的.
但是还是不好用.

那能解释一下为什么我 sleep了一下 那边就好了呢?

那你自己一个人玩吧。
如果你不想再好好看看 recv 那一段的话。

论坛徽章:
0
17 [报告]
发表于 2006-05-11 12:45 |只看该作者
再补充一下.我send那边的每个buf都是128的.
recv那边的也是.

不存在什么边界 什么的说法.

论坛徽章:
0
18 [报告]
发表于 2006-05-11 12:45 |只看该作者
原帖由 wingger 于 2006-5-11 12:44 发表

那你自己一个人玩吧。
如果你不想再好好看看 recv 那一段的话。

怎么看?

论坛徽章:
0
19 [报告]
发表于 2006-05-11 12:46 |只看该作者
在while里循环接收的.

服务器段 发送一个包里有 end的时候终止.

  1. while(1)
  2. {
  3. recv(fd,buf,sizeof(128),0);
  4. ....判断是不是end.不是continue;
  5. }
复制代码

[ 本帖最后由 kernel.org 于 2006-5-11 12:48 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
20 [报告]
发表于 2006-05-11 12:54 |只看该作者
recv 的返回值未作任何处理,就敢说是“有边界的”?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP