免费注册 查看新帖 |

Chinaunix

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

socket成功发送,但无法循环接收,只能单次接收,关键代码内详 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-24 12:23 |只看该作者 |倒序浏览
详细代码就不写了,发送一个POST请求到apache服务器
发送:

        sendlength=send(H_socket,sendbuf,strlen(sendbuf),0);
//      printf("send length:%d\n",sendlength);
虽然没做检验,但是发送基本上没问题,用NC监听80时状态很稳定

接受代码1:
        do
        {
                recvlength=recv(H_socket,tmpbuf,sizeof(tmpbuf),0);
                strcat(recvbuf,tmpbuf);
        }
        while(recvlength>;0);

接受代码2:
        recv(H_socket,recvbuf,sizeof(recvbuf));

发送缓冲是1024,接收临时缓冲是204800
具体状况表现为,简单的一次接收,就是2代码,可以顺利接收并且程序顺利执行下去,但是这只限接收数据一次,其实我知道apache遇到数据大的话会分段发送,所以使用循环接收代码,想接收全部的数据,但是使用循环代码得时候,程序就会卡住的接收这里无法继续,应该是跳不出循环吧,所以很郁闷了。。
看到别人写循环接收是while(recv(H_socket,recvbuf,sizeof(recvbuf))>;0){}
我的也差不多阿,而且我也尝试过这种。
假如我发送一个请求,apache返回多个结果,循环接收能否做到呢?(以前在win下我实现过),这里是不是需要更高级的select来实现?
先谢过了

论坛徽章:
0
2 [报告]
发表于 2005-08-24 15:48 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

up for myself..

论坛徽章:
0
3 [报告]
发表于 2005-08-24 16:08 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

打印你的recv返回值看看!

论坛徽章:
0
4 [报告]
发表于 2005-08-24 16:09 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

看看是不是返回0了?server端发出数据后是否断开了?

论坛徽章:
0
5 [报告]
发表于 2005-08-24 16:30 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

应该没有断开,而是程序停止在了recv,根本无法打印出recv的东东

论坛徽章:
0
6 [报告]
发表于 2005-08-24 16:44 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

那就是server端只发了一次数据呗!把server端代码帖上来看看

论坛徽章:
0
7 [报告]
发表于 2005-08-24 16:56 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

server是apache。。。
客户段发送的http协议请求绝对正确。。

论坛徽章:
0
8 [报告]
发表于 2005-08-24 19:10 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

我想,假如第一次接收到了全部的数据
那么第二次岂不是一直处于阻塞状态出不来了?

论坛徽章:
0
9 [报告]
发表于 2005-08-25 10:53 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

只有对方close(2)或shutdown(2)的时候,你的读操作才能返回0。
不要使用常连接试试。

论坛徽章:
0
10 [报告]
发表于 2005-08-25 12:34 |只看该作者

socket成功发送,但无法循环接收,只能单次接收,关键代码内详

你用的是阻塞模式,当没有数据时当然就停在recv上了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP