主题 : socket 丢包的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 63206
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
综合积分: 26 分
注册时间: 2012-02-16
最后登录: 2012-03-09
楼主  发表于: 2012-03-01 14:06

 socket 丢包的问题

接收客户端数据再发送给客户端时数据丢包!!!!请各位赐教!!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);
            }
                    
        }
    
            
    }
数据丢失   请问是怎么回事啊 ???????????