免费注册 查看新帖 |

Chinaunix

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

connect与accept时间相隔甚远 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-06 14:59 |只看该作者 |倒序浏览
client为阻塞方式。
server为select方式。

当client connect函数返回,一分钟以后server的套接口描述符才
有数据。


下面是server端的accept代码。

for( ; ; ){
        FD_ZERO(&readfds);            // clear set
        FD_SET(m_fdListenSocket, &readfds);       // add sock to set
        memset[/quote]( &clientAddr, 0, sizeof (sockaddr_in) );

                tval.tv_sec  = 0;
                tval.tv_usec = 10;

               err = ::select(0, &readfds, NULL, NULL, &tval);
               if ( -1 == err ) {
                break;
        }
        if (FD_ISSET(m_fdListenSocket, &readfds)){
#ifdef _WINDOWS
                int iSockaddrLen = sizeof (sockaddr_in);
#else
                socklen_t iSockaddrLen = sizeof (sockaddr_in);
#endif
                int client_socket = accept(m_fdListenSocket, (sockaddr *)&clientAddr, &iSockaddrLen );
            if (client_socket == -1)
            {
        break;
            }
}


下面是client端的连接代码:
        // 建立socket
        sock_fd = socket( AF_INET, SOCK_STREAM, 0 );
#ifdef _DEBUG
        printf( "Call socket function, Return socket file desc: %d\n", sock_fd );
#endif

        if( -1 == sock_fd ){
                return -1;
        }

        memset( &serv_addr, 0, sizeof(sockaddr_in) );
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_port = htons( SERV_PORT );

        if( 0 == pIP_Addr ){
                serv_addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
        } else {
                serv_addr.sin_addr.s_addr = inet_addr( pIP_Addr );
        }


        ret = connect( sock_fd, (sockaddr*) &serv_addr, sizeof(serv_addr));


client 在connect完成后,执行一个cpu利用率几乎为100%的计算程序。

client是个双cpu的机器,并且运行了两个上面的同样的程序,当只运行一个程序时,几乎没有延时。。

server 为windows 2000
client 为Linux 7.3


请高手指点,为什么要等待那么长时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP