lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] TCP transmittion slow down after some time


From: kanprin
Subject: [lwip-users] TCP transmittion slow down after some time
Date: Thu, 14 Jan 2010 19:40:38 -0800 (PST)

hi all,
I've got a problem with the tcp transmittion.

with the lwip1.3.2, I wrote a test file use the BSD socket.
the task is to echo the data received from PC,the PC sends without sleep.

every thing goes well at first with 200kbps all most, 
but after sometime,it fall down to 40kbps
through the states display ,I find that some PBUF_POOL are used,but never
released at that moment.
my device runs slower than PC, 
it seems it happens when PC resend some packets by the protocal layer most
likely.


my lwipopts.h configure :
#define PBUF_POOL_SIZE                  50
#define PBUF_POOL_BUFSIZE               128 
#define MEM_SIZE                          (1024*8)
#define TCP_MSS                         256
#define TCP_SND_BUF                     1024
#define TCP_SND_QUEUELEN                (6*TCP_SND_BUF/TCP_MSS)
#define MEMP_NUM_TCP_SEG        TCP_SND_QUEUELEN
#define TCP_WND                         1024

/*here's my test code */
static void tcpip_tran_thread(void *arg)
{
        int         ret=0;
    int         listen_socket1,temp_socket;
    SOCKADDR_IN local_addr;
    SOCKADDR_IN from;
    socklen_t   addr_len = sizeof(SOCKADDR_IN);
        MSG_Q_BUF *msg=NULL;
        
    local_addr.sin_family = AF_INET;
    local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    local_addr.sin_port = htons(8000);
        listen_socket1 = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP); // TCP socket
    if (listen_socket1 == INVALID_SOCKET)
    {
        //dbg_printf(("create listen_socket failed!\r\n"));
        return;
    }
    
    if (bind(listen_socket1,(struct sockaddr*)&local_addr, addr_len) ==
SOCKET_ERROR) 
    {
        closesocket(listen_socket1);
        listen_socket1 = INVALID_SOCKET;
        //dbg_printf(("listen_socket bind port failed with %d\r\n",errno));
        return ;
    }
    
    if (listen(listen_socket1,5) == SOCKET_ERROR)
    {
        closesocket(listen_socket1);
        listen_socket1 = INVALID_SOCKET;
        //dbg_printf(("listen_socket listen failed with %d\r\n",errno));
        return ;
    }

        while(1)
        {
                temp_socket = accept(listen_socket1,(struct 
sockaddr*)&from,&addr_len);
                if (temp_socket == INVALID_SOCKET)
        {
            //dbg_printf(("accept failed with %d\r\n",errno));
            continue;
        }
                while(1)
                {
                        if((ret=recv(temp_socket, fullTcpBuf, 
FULL_TCP_BUF_SIZE, 0))>0)
                {
                                if((ret=send(temp_socket, fullTcpBuf, ret, 
0))<0)
                                {
                                        break;
                                }
                }
                        else
                        {
                                //dbg_printf(("tcpecho socket had been 
closed\r\n"));
                                break;
                        }
                }
                closesocket(temp_socket);
        }
}


best regards.
kanprin

-- 
View this message in context: 
http://old.nabble.com/TCP-transmittion-slow-down-after-some-time-tp27172080p27172080.html
Sent from the lwip-users mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]