testtest

范甫
2023-12-01

aaaaaaa

int* procRecvfunc(void* arg)
{
    //int index = *(int*)(arg);
    int fd;
    int epollfd = g_iRecvEpollFd;
    struct epoll_event events[MAX_EVENT_NUMBER];
    char buf[TCP_BUFFER_SIZE];
    int i,ret;
    unsigned long ulCount = 0;
    unsigned long ulRecvLen = 0;
    long long t1, t2, diff;

    t1 = ustime();
    while (1)
    {
        int number = epoll_wait(epollfd, events, MAX_EVENT_NUMBER, -1);
        if (number < 0)
        {
            printf("epoll fail\n");
            break;
        }

        for (i = 0;i < number;i++)
        {
            fd = events[i].data.fd;
            if (events[i].events & EPOLLIN)
            {
                while (1)
                {
                    //memset(buf,'\0',TCP_BUFFER_SIZE);
                    ret = recv(fd, buf, TCP_BUFFER_SIZE - 1, 0);
                    if (ret < 0)
                    {
                        if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
                        {

                        }
                        else
                        {
                            delfd(epollfd, fd);
                            close(fd);
                            printf("EAGAIN/EWOULDBLOCK %d/%d error errno:%d, fd:%d\n", EAGAIN, EWOULDBLOCK, errno, fd);
                        }
                        break;
                    }
                    else if (ret == 0)
                    {
                        delfd(epollfd, fd);
                        close(fd);
                        printf("close 0\n");
                        break;
                    }
                    else
                    {
                        ulRecvLen += ret;
                        ulCount++;
                        if ((ulCount & 0xFFFFFF) == 0)
                        {
                            t2 = ustime();
                            diff = t2 - t1;
                            t1 = ustime();
                            printf("recv count %lu, recv total len: %lu, avg len:%d, diff:%lluus, avg time %lluns, last len %d\n", ulCount, ulRecvLen, ulRecvLen/ulCount, diff, diff*1000/ulCount, ret);
                            ulCount = 0;
                            ulRecvLen = 0;
                        }
                    }
                }
            }
            else if (events[i].events & EPOLLOUT)
            {
                printf("other event epoll out\n");
            }
            else
            {
                printf("other event\n");
            }
        }
    }
}

bbbbbbbb

 类似资料:

相关阅读

相关文章

相关问答