while(1)
{
FD_ZERO(&rfds);
FD_SET(0, &rfds);
maxfd=0;
FD_SET(sockfd,&rfds);
if(sockfd>maxfd)
{
maxfd=sockfd;
}
tv.tv_sec=1;
tv.tv_usec=0;
retval=select(maxfd+1,&rfds,NULL,NULL,&tv);
if(retval==-1)
{
printf("will to leave , error to select, %s ", strerror(errno));
break;
}else if(retval == 0)
{
if(FD_ISSET(sockfd, &rfds))
{
bzero(buffer, MAXBUF+1);
len = recv(sockfd, buffer, MAXBUF, 0);
if (len > 0)
{
printf("接收消息成功:'%s',共%d个字节的数据\n",buffer, len);
}
else{
if (len < 0)
{
printf("消息接收失败!错误代码是%d,错误信息是'%s'\n",errno, strerror(errno));
}
else
{
printf("对方退出了,聊天终止!\n");
}
break;
}
}
if(FD_ISSET(0, &rfds))
{
bzero(buffer, MAXBUF+1);
fgets(buffer, MAXBUF,stdin);
if(!strncasecmp(buffer,"quit",4))
{
printf("quit to talk\n");
break;
}
len = send(sockfd, buffer, strlen(buffer)-1,0);
if (len < 0)
{
printf("消息'%s'发送失败!错误代码是%d,错误信息是'%s'\n", buffer, errno, strerror(errno));
break;
}
else
{
printf("消息:%s\t发送成功,共发送了%d个字节!\n",buffer, len);
}
}
}
}
close(sockfd);
return 0;
}
Linux_C_select_client_代码_02
最新推荐文章于 2021-03-07 15:51:40 发布