免费注册 查看新帖 |

Chinaunix

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

请教关于recv()函数的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-23 16:19 |只看该作者 |倒序浏览
我写了一个client端与一个server端,但是我server端向client端发送数据的时候,server端表示已经发送出来了,但是client端却没有接收到,一直在recv()那个函数那儿阻塞着, 但是在这一个发送与接收的过程之前我的server与client端也经过了多次的数据传输都成功了的. 就是运行到当前这一个传输数据的时候出错了,不知道是什么原因? 谢谢高手们指教!

论坛徽章:
0
2 [报告]
发表于 2007-04-23 16:29 |只看该作者
就是运行到当前这一个传输数据的时候出错了,不知道是什么原因?


这话什么意思,什么叫运行到当前这一个传输数据时候出错了???


还有如果前面都可以recv()了,肯定不是recv()的问题,应该是你的程序逻辑有问题吧。

还有,你也不交待下什么协议,什么程序,什么IO模式……

论坛徽章:
0
3 [报告]
发表于 2007-04-23 16:37 |只看该作者

回复 #2 writer15 的帖子

这是我server端的代码:
        if ((lentemp = send(socknum, checkresult, strlen(checkresult), 0)) == -1)
        {
                printf("send check user name error\n");
                return -8;
        }
这是我client端的代码:
        if (recv(socknum, checkresult, 3, 0) == -1)
        {
                printf("rece check username error\n");
                return -6;
        }

是TCP协议, 我这个代码的server端已经表示有数据传输了,因为那个返回值为checkresult的长度.但是在client端却问题接收不了数据,一直阻塞在那儿. 因为我是一个比较长的代码,在之前我也这样传输了数据了, 都可以接收到,就是说我程序中在多个和这个相同的代码, 是为了server和client端进行确认的, 前面的都执行正常, 到了当前这个就错误了.

论坛徽章:
0
4 [报告]
发表于 2007-04-23 17:12 |只看该作者
网络的情况是很复杂的,一次成功不代表以后肯定会成功。
TCP没有边界保护,每个recv和send不是一一对应。
这种单一的阻塞模型一般只是用来做做实验,lz起码换个select模型来驱动吧

论坛徽章:
0
5 [报告]
发表于 2007-04-23 17:53 |只看该作者

回复 #4 feasword 的帖子

我的代码是一个流程化的东西,所以不是太方便用select()来做.
具体是这样的:
客户端                           服务端
send()
                                                 recv()
                                                 send()
recv()
send()
                                                 recv()
                                                 send()
recv()
前面的几个send()与recv()都正常, 但是到了最后一次服务端向客户端发送的时候就出问题了,send()的返回值没有错, 是我需要传输的字节数, 但是recv()却打死都收不到, 一直阻塞在那儿. 我确实是不知道怎么回事了. 望大家给个建议.
非常感谢!

论坛徽章:
0
6 [报告]
发表于 2007-04-23 21:57 |只看该作者
你最好把所有代码都贴出来,否则很难帮你

论坛徽章:
0
7 [报告]
发表于 2007-04-24 09:46 |只看该作者
关注中,问题很值得探讨
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP