Я пытаюсь связаться клиент-сервер без полезной нагрузки tcp.Я просто использую заголовок tcp в качестве поля полезной нагрузки, которое по умолчанию составляет 20 байт.Я только что понял, что использование процессора очень велико для передачи больших файлов. Я попытался установить таймер для каждой части кода.(Я использовал для этого rdtsc.) В результате я собираю все пакеты за 1000 тиков (я не касаюсь контрольной суммы ipv4, так как ядро вычисляет ее автоматически);затем я посмотрел время отправки, это занимает 100000 ~ тик (в 100 раз больше, чем для сборки пакета).Есть ли более быстрый способ отправки необработанного TCP-пакета без sendto или способ сделать sendto более быстрым?
Я измеряю время отправки следующим образом:
timefirst = rdtsc()
sendto()
timesecond = rdtsc()
print timesecond - timefirst
Я создаю свой сокет отправки с помощью:
int mysocket = socket(PF_INET, SOCK_RAW, IPPROTO_TCP);
int one = 1;
const int *val = &one;
setsockopt(mysocket, IPPROTO_IP, IP_HDRINCL, val, sizeof(one));
Примечание: я говорю о времени пакета только на моей стороне (программа отправителя и ядро).Речь идет не о том, как медленно он проходит по проводам, ISP и маршрутизаторам.