![]() |
Патч с опциями сокета
Этот патч я в январе 2004 предлагал для Хьюрварда. Никто на него не жаловался. По идее, должно работать лучше, должны уменьшиться лаги. Особенно должна уменьшиться задержка поступления сообщений в начале битвы. По хорошему надо аналогичные изменения внести в mcclient, да руки н е доходят. Всю славу - Горилюбу.
*** comm.c.orig 2004-10-05 17:39:24.229138279 +0400 --- comm.c 2004-10-05 17:42:51.507308315 +0400 *************** *** 1754,1759 **** --- 1754,1778 ---- /* keep it from blocking */ nonblock(desc); + { // set socket options Olleg 2004-10-05 + int opt; + #if defined(IPTOS_LOWDELAY) && !defined(CIRCLE_MACINTOSH) + // Выставляем приоритет для интерактивных пакетов + opt=IPTOS_LOWDELAY; + if (setsockopt(s, SOL_IP, IP_TOS, &opt, sizeof(opt)) < 0) { + perror ("Can't set IPTOS_LOWDELAY\n"); + } + #endif + #if defined(TCP_NODELAY) && !defined(CIRCLE_MACINTOSH) + // не накапливать информацию в буфере перед посылкой абоненту + // ведет к уменьшению размеров пакетов и своевременному их отправлению + opt=1; + if (setsockopt(s, SOL_TCP, TCP_NODELAY, &opt, sizeof(opt)) < 0) { + perror ("Can't set TCP_NODELAY\n"); + } + #endif + } + /* set the send buffer size */ if (set_sendbuf(desc) < 0) {CLOSE_SOCKET(desc); |
RE: Патч с опциями сокета
#include <netinet/ip.h> надо не забыть.
|
RE: Патч с опциями сокета
Хм, у меня скомпилировалось без этого хидера. Linux SuSE 9.1
Возможно это зависит от операционки. Тогда надо будет вписать: #ifdef операционка #include <netinet/ip.h> #endif |
RE: Патч с опциями сокета
Цитата:
[absh@dpc absh]$ grep -r IPTOS_LOWDELAY /usr/include/ /usr/include/linux/ip.h:#define IPTOS_LOWDELAY 0x10 /usr/include/netinet/ip.h:#define IPTOS_LOWDELAY 0x10 Странно все это. Но в любом случае не есть проблема. Только #ifdef туда лепить -- криво как-то... |
Часовой пояс GMT +4, время: 05:40. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot