[Top][All Lists]
[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.
- [lwip-users] TCP transmittion slow down after some time,
kanprin <=