在100Mbps的局域网中使用UDT传输数据。我用的UDT版本是4.10。使用UDT::epoll
数据收发双方是使用会合连接。使用流式UDT套接字,SOCK_STREAM。
然后分为两个线程,一个线程中使用了UDT::epoll_wait来等待有数据收发事件的UDT套接字,然后将该套接字传递给另外一个线程,在另外一个线程里处理数据接收和发送。
多次测试,发现数据传输最大速度4MB/s,理论上至少应该是9MB/s啊。这个速度明显不对啊。
数据发送端循环发送数据直到没有数据可发送,或者发送缓冲区已满。
int iSendDataSize;
while (iSendDataSize > 0)
{
//循环发送数据
iSendDataSize = UDT::send();
}
数据接收端也是这样,循环接收。
while (iSendDataSize > 0)
{
//循环接收数据
iRecvDataSize = UDT::recv();
}
请各路高手指点,有没有更好的思路,或者一些关键的细节。
我在想是不是UDT::epoll机制的影响,使得速度降低。但是有不太确定,不知道自己是不是有什么地方没用好。
在线等,欢迎讨论。