怎么判断socket是否有效
如何判断socket是否有效
RT,但是不想丢失任何数据,有的人说用recv可以搞定,可是那样的话可能会recv掉有用数据,好像select可以解决这个问题,可是不知道怎么用,怎么办,如何才能判断一个socket(即int)是否有效呢,前提是不要丢数据,越简单越好,当然可靠性要保障
------解决方案--------------------
我写个大概吧!
select(maxfd+1,&allset,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&allset))
{
//sockfd有效则执行的代码
}else{
//否则无效执行的代码
}
------解决方案--------------------
RT,但是不想丢失任何数据,有的人说用recv可以搞定,可是那样的话可能会recv掉有用数据,好像select可以解决这个问题,可是不知道怎么用,怎么办,如何才能判断一个socket(即int)是否有效呢,前提是不要丢数据,越简单越好,当然可靠性要保障
socket
select
网络编程
高级编程
是否有效
------解决方案--------------------
我写个大概吧!
select(maxfd+1,&allset,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&allset))
{
//sockfd有效则执行的代码
}else{
//否则无效执行的代码
}
------解决方案--------------------
fd_set fd_r,fd_w;
struct timeval tvv;
while(1)
{
FD_ZERO(&fd_r);
FD_ZERO(&fd_w);
FD_SET(lisSock, &fd_r);
FD_SET(lisSock, &fd_w);
tvv.tv_sec = 2;
tvv.tv_usec = 0;
Ret = select(lisSock + 1, &fd_r, &fd_w, NULL, &tvv);
printf("\n [%s]-[%d]: Ret = %d \n", __func__, __LINE__, Ret);
acpSock = accept( lisSock, (struct sockaddr *)&clieaddr_in, &socklen);
if( acpSock < 0)
{
perror("accept");
sleep(2);
continue;
}
m_clientNum ++;