Tag: 复用

C – 使用poll在socket(s)和stdin之间进行多路复用 – 服务器

我正在编写一个客户端服务器应用程序,我正在使用poll来在多个客户端套接字和stdin之间进行多路复用,我可以在其中插入命令(例如:停止服务器)。 我相信我的代码的结构(“逻辑”)是正确的,但它的行为并不像我期望的那样: struct pollfd pfd[NSERVER]; //defined as 10 pfd[0].fd = fileno(stdin); pfd[0].events = POLLIN; pfd[1].fd = socktfd; //server bind, listen socket pfd[1].events = POLLIN; struct sockaddr_storage remoteaddr; // client address socklen_t addrlen; char remoteIP[INET6_ADDRSTRLEN]; addrlen = sizeof remoteaddr; char buf[1024]; // buffer int pos=2; while(poll(pfd,1,0) >= 0) { if(pfd[0].revents & POLLIN) { //stdin //process input […]