将SOCK_DGRAM
用于UDP
套接字
所有数据包的长度均为22 bytes
(即64 including headers
)
client.c
...
no_of_packets--;
sprintf(buf, "#:!0 rem");
sprintf(buf, format , buf);
sprintf(buf_aux, "#: 0 rem");
sprintf(buf_aux, format , buf_aux);
buf[MAX_LINE-1] = '\0';
buf_aux[MAX_LINE-1] = '\0';
len = strlen(buf) + 1;
send(s, buf, len, 0);
while (no_of_packets-- > 1) {
nanosleep(&T, NULL);
send(s, buf, len, 0);
}
send(s, buf_aux, len, 0);
server.c
...
while(1) {
if (len = recv(s, buf, sizeof(buf), 0)){
// do nothing
}
}
当我打开
Wireshark
来查看发送的数据包之间的平均延迟时,我可以看到以下内容:
最佳答案
在Linux上,您可以使用内核旁路网络堆栈(例如PF_RING ZC (Zero Copy))和在隔离的内核上运行的FIFO实时线程来做到这一点:
您可能还会发现Understanding PCIe performance for end host networking白皮书很有用。