接收客户端数据再发送给客户端时数据丢包!!!!请各位赐教!!11
while (1)
{
FD_ZERO(&readset);
FD_SET(listenfd, &readset);
FD_SET(connfd,&readset);
FD_SET(0,&readset);
ph = head;
while (ph->next)
{
FD_SET(ph->next->clifd, &readset);
ph = ph->next;
}
select((ph->clifd) + 1, &readset, NULL, NULL,0);
if (FD_ISSET(listenfd,&readset))
{
len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &len);
head = add_cli(head, connfd);
continue;
}
for (connfd = (listenfd + 1); connfd <= (ph->clifd); connfd++)
{
if (FD_ISSET(connfd, &readset))
{
bzero(buf,MAX_LINE);
if (recv(connfd, buf, MAX_LINE, 0) <= 0) //读取客户端的数据
{
head = delete_cli(head, connfd);
break;
}
printf("from client msg:%s\n", buf);
if (send(connfd,buf,strlen(buf),0)<=0)//将读取的数据发回给客户端
{
head = delete_cli(head, connfd);
break;
}
}
if(FD_ISSET(0,&readset))
{
bzero (buf,MAX_LINE);
scanf ("%s",buf);
if (send(connfd,buf,strlen(buf), 0)<0)//发送数据
{
head=delete_cli(head,connfd);
break;
}
printf("from server msg:%s\n",buf);
}
}
}
数据丢失 请问是怎么回事啊 ???????????