注册 登录
编程论坛 嵌入式开发

急需解答, 哪位高手指点一下啊? 感激不尽!!!!

lfokbest 发布于 2010-03-25 23:16, 1706 次点击
listen(hsockfd,5);

    act.sa_handler=sig_cld;
    sigemptyset(&act.sa_mask);
    act.sa_flags=0;
    act.sa_flags=0;
    sigaction(SIGCLD,&act,&oact);

    for(;;){
        c_len=sizeof(c_add);
        csockfd=accept(hsockfd,(struct sockaddr *)&c_add,&c_len);
        if(csockfd<0)
                {
            if(errno==EINTR) continue;
            errorlog("Accept:%s\n",strerror(errno));
            close(csockfd);
            continue;

上述代码为银行代理服务器一小部分,listen(hsockfd,5)表示连接等待队列中的数量控制为5个, 然后循环调用accept(hsockfd,(struct sockaddr *)&c_add,&c_len)创建一个新的套接口获取一个连接的信息,请问:怎样实现同时处理多个客户机连接,比如说同时处理100个客户的连接???
请高人指点,感激不尽!!! 有事例代码更好!!!谢谢了
1 回复
#2
cnfarer2010-03-26 07:33
另建一个线程函数如:DWORD WINAPI scoketThread(LPVOID lpParam);  //该函数调用实参用accept()创建的一个socket对象c_add
csockfd=accept(hsockfd,(struct sockaddr *)&c_add,&c_len);
if  (c_add != INVALID_SOCKET)
{
    hThread = CreateThread(NULL, 0, scoketThread, (LPVOID)c_add, 0, &dwThreadId); //这个函数创建一个线程,用法自己查一下!
    ...
}
1