怎么实现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);
#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;
}
摩杜云
2024-07-09 广告
2024-07-09 广告
一个好的发送邮件api公司,不只是看价格,还要考虑很多因素。建议可以多找几个比对一下。您可以到摩杜云了解下。摩杜云成立于2019年,依托于公司多年技术沉淀和强大的云计算研发实力,面向全世界各个国家和地区、企业组织和个人开发者,提供全球的云计...
点击进入详情页
本回答由摩杜云提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询