c++ 通信演进level2 ----多线程同步阻塞通信(BIO)

  这一篇是在昨天写的基础上,查阅了一些资料,对于BIO模型做了更深一步的理解后,实现的代码:地址。 主要修改的代码在于:

typedef struct {
    HANDLE thread;
    SOCKET sock;
}AcceptNode;

//保存连接的容器
list<AcceptNode*> acceptList;
......
int main(){
    //加载Winsock库,初始化socket资源
    initialization();
    //创建套接字
    SOCKET s_server;
    s_server = socket(AF_INET,SOCK_STREAM,0);
    //绑定信息
    bindInfo(&s_server);
    //将socket设置为lisen状态
    changtoListen(&s_server);
    //增加对多线程的支持
    while (1){
        SOCKET commandSock;
        responseAccept(commandSock,&s_server);
        //构造节点
        AcceptNode* _node = new AcceptNode;
        _node->sock=commandSock;
        HANDLE _thread = CreateThread(NULL,0,onInteract,(LPVOID)&_node->sock,0,NULL);
        _node->thread = _thread;
        //将当前接入的节点加入容器
        acceptList.push_back(_node);
        //进入下一轮请求
    }
    return 0;
}

  其余的代码都没有什么变化。  其运行结果:

  此时,我将再启动一个客户端:

  它对应着BIO模型的: 一个连接,一个线程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章