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

 我来答
树大没风
推荐于2016-04-11 · TA获得超过316个赞
知道小有建树答主
回答量:200
采纳率:100%
帮助的人:105万
展开全部
用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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式