怎么实现socket服务端在接收客户端发来的数据的时候,有消息就接收,没消息就跳出,继续进行下一步

如题所述

用select函数啊,这个函数可以设置为遍历某几个端口,或者某一个端口,如果有需要处理的数据就处理数据就行了,没有的话会立即返回,程序继续往下执行就行了
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);追问

请帮我实现下,多谢
void CSocketServer::RecMsg(char *RecMsg)
{
while (1)
{
char buffer[1024]="\0";
if (recvfrom(m_Socket,RecMsg,2048,0,(struct sockaddr*)&m_from,&m_fromlen)!=SOCKET_ERROR)
{
return;

追答

void CSocketServer::RecMsg(char *RecMsg)

{
fd_set rset;
struct timeval tv;

FD_ZERO(&rset);
FD_SET(clifd,&rset);

tv.tv_sec = 2;(等待时间间隔秒数,要立即查看端口有没有数据需要读的话可设置为0)
tv.tv_usec = 0;
while(1)
{
if (select(m_Socket + 1,&rset,NULL,NULL,&tv) <= 0)
{
printf("nothing to read!\n");
}
else
{
recvfrom(m_Socket,RecMsg,2048,0,(struct sockaddr*)&m_from,&m_fromlen);

}
}
return;
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答