免费注册 查看新帖 |

Chinaunix

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

请教一个关于socket编程的简单问题…… [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-16 15:51 |只看该作者 |倒序浏览
偶写了一个简单的tcp 并发的服务器小程序,不过遇到一个小问题,因为初学不久,向各位达达请教一下:
源码如下:
main()
{
        sock1=socket();
        bread=setsockopt(serverSocket,SOL_SOCKET,SO_RCVTIMEO | SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));
        bind();
        listen();
        while(1)
        {
                sock2=accept();
                if((child=fork())==0)       //创建一个子进程
                {
                   while(1)
                   {
                        read();
                       
                        if(!sub())        //问题就出在这儿
                        {
                                printf(error!);
                                break;
                        }
                        else
                        {
                                printf("OK";
                        }
                    }
                    printf("Connection closed by client.\n";
                    close(sock2);
                    exit(0);
                }
                else if(child==-1)
                        ……
                close(sock2);
        }
        return 0;
}
//---------------------------------------------------
我遇到的问题是:在调用一个验证用的子函数sub时候,本意是验证成功,输出一个OK,继续执行,否则输出错误信息,退出当前连接;
可是我的问题在于,收到客户端正确的信息后,服务器就没有反映了(像是当前连接被挂起了),并不会输出OK,直到等到客户端断开连接的时候,才输出原来就应该输出的OK。而收到错误的信息,则正常地输出error,断开连接!
原来以为是阻塞造成了,又设了O_RCVTIMEO | SO_SNDTIMEO 选项,可是还是不见效!
想请教一个各们,这是哪儿出错了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP