окружение: macbook pro, macOS Mojave 10.14.6
Я проверял пропускную способность ввода пакетов в беспроводную сеть.
Проблема заключается в том, что при отправке пакетов udp на мой маршрутизатор для100K раз в цикле, только около 16K фактически вводятся в сеть, но все 100K-вызовов к sendto возвращаются успешно.
char dbuf[1100] = "\0";
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
uint32_t ip_binary_net = inet_addr("192.168.0.1");
struct sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(5577);
sa.sin_addr.s_addr = ip_binary_net;
for(int i = 0; i < 100000; i++){
int send_num = sendto(sockfd, dbuf, 1000, 0, (struct sockaddr *)&sa, sizeof(sa));
if(send_num != 1000)
printf("send_num err!\n");
}
Моя программа показывает пропускную способность 2G Мбит / с, что абсолютно невозможно.
Я проверил сетевую утилиту, Wireshark на моем MacBook и маршрутизатор. Ясно, что только небольшая часть этих пакетов была фактически введена в сеть.
Я столкнулся с той же проблемой, используя libpcap. Но эта проблема не произошла на моей машине Windows. Это какая-то особенность ядра macOS?