如何提高tcp echo server的通信速率
本帖最后由 woailaoxiang 于 2014-07-25 15:54 编辑在Cortex A9的芯片上运行Linux 3.14,千兆以太网,全双工
用socket建立了一个接收并且回环应答的tcp服务器,
但是在实测中发现,整个环路的速率只有10MB/s左右,
如果只是接收数据,通信速率有70MB/s,
只是发送,通信速率在40MB/s
怎样进行优化,可以提高回环通信的效率?
谢谢!
具体的代码,如下
通过pthread_create创建了两个单独的收发线程typedef struct{
unsigned int valid;
unsigned int length;
unsigned char buffer;
}SigPackTypedef;
SigPackTypedef Pack;
SigPackTypedef *pRcv, *pSnd;
pRcv= pSnd= Pack;
void *recv_func(void *arg)
{
while(1)
{
if(pRcv->valid==0)
{
rxlen = recv(new_fd, pRcv->buffer, 8192, 0);
if(rxlen>0)
{
pRcv->length= rxlen;
pRcv->valid= 1;
pRcv++;
if(pRcv>= &(Pack))
pRcv= Pack;
rxsum+= rxlen;
}
else
{
printf("err in recv(%s)\n", strerror(errno));
close(sockfd);
exit(0);
}
}
}
}
void *send_func(void *arg)
{
int res;
txsum= 0;
while(1)
{
if(pSnd->valid)
{
res= send(new_fd, pSnd->buffer, pSnd->length, 0);
if(res!= pSnd->length)
{
printf("Err in send(%s)\n", strerror(errno));
}
else
{
pSnd->valid= 0;
pSnd++;
if(pSnd>= &(Pack))
pSnd= Pack;
txsum+= res;
}
}
}
} 另外,创建的socket是阻塞的。 自己顶,坚决不能沉帖!
页:
[1]