linux__select__조작하다
select , ,func1(select();) func2(select();) , , 。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/poll.h>
#include <linux/soundcard.h>
#include <string.h>
#include <signal.h>
#include <time.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
#include <string.h>
/*--------------------------------------------------------------------------------------------*/
void CTcpServer::findMaxClientsockId()
{
CycleList *pList=CmdSockList.GetHead();
int maxid=0;
maxid=m_ServerSockId;
while(pList!=NULL)
{
if(pList->lSocket>=maxid)
{
maxid=pList->lSocket;
}
pList=CmdSockList.GetNext(pList);
}
m_maxClientsockId = maxid;
}
extern int gTcpSvrQuit;
int CTcpServer:: CreateTcpServer()
{
fd_set acp_fdsr; //
struct timeval tv;
m_CurrentConnCnt =0;
sin_size = sizeof(client_addr);
m_maxClientsockId = m_ServerSockId;
CycleList *pList=CmdSockList.GetHead();
while(gTcpSvrQuit)
{
FD_ZERO(&fdsr);/// acp_fdsr
FD_SET(m_ServerSockId,&fdsr);
tv.tv_sec = 30;
tv.tv_usec =0;
pList=CmdSockList.GetHead();
while(pList!=NULL)
{
FD_SET(pList->lSocket,&fdsr);
/// printf("lSocket is %d
",pList->lSocket);
pList=CmdSockList.GetNext(pList);
}
ret = select(m_maxClientsockId +1,&fdsr,NULL,NULL,&tv);
if(ret <0)
{
perror("select error!
");
break;
}
else if(ret ==0)
{
/// printf("timeout
");
continue;
}
while(pList!=NULL)
{
if(FD_ISSET(pList->lSocket,&fdsr))
{
}
pList=pList->lNext;
}
if(FD_ISSET(m_ServerSockId,&fdsr))
{
new_fd = accept(m_ServerSockId,(struct sockaddr *)&client_addr,&sin_size);
if(new_fd <=0)
{
perror("accept error::");
continue;
}
}
}
return 0;
}
。。。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.