我有一个在 Windows XP 平台(i7 2.1 Ghz 处理器)上运行的应用程序。此应用程序是主节点和从节点之间通过 UDP 进行的基于主/从的通信。主节点发送请求,从节点发送响应(突发模式),每 5 ms 发送一个数据包,每个数据包长 1300 字节,包括标头。
回到主节点,主线程接收数据并将其写入队列,触发并行线程从线程中读取。
问题:Winsock API 在读取下一个数据包时执行时间很长,因此缓冲区中的数据正在丢失。
执行时间:Recvfrom() - 200 - 400 微秒。
Open_Sock ()
{
socket();
//Error check
connect ();
//Error Check
}
Receivethread()
{
sock again:
select(socket, read,write,excep,(0,0));
//error check
rc = recvfrom(socket,buf,len,0,&s_addr,&cln_alen)
if(rc>0) {
enqueue(queue,buf);
}
}
我确信 Winsock API 不需要这么长时间来获取下一个数据包。但我找不到任何关于实际执行时间的信息。在这个方向上的任何帮助都非常感谢。