LINUX.ORG.RU

Сообщения Ingvar2145

 

Рост количества потерь пакетов со временем.

Я пишу udp с гарантией доставки, сейчас в программе нет нормального контроля перегрузки, но у меня есть буфер из 64 пакетов размером 1460 байт и переменная - число, которая отвечает за то, сколько пакетов можно положить в буфер, с начала она = 1. Я отправляю все пакеты из буфера, одновременно проверяя приходящие подтверждения. Если без потерь проходит весь текущий размер буфера, то я + 1. Если произходит потеря, то таймер заканчивается и все не подтверждённые пакеты отправляются заново. Ещё есть переменная которая увеличивается на 1 каждый раз когда заканчивается таймер и все пакеты приходится отправлять заново. 100 000 это количество пакетов которое надо передать через wifi.

ПРОБЛЕМА: я запускаю программу, скажем раз 10, потом открываю какие нибудь сайты и т.д. youtube например. И через некоторое время ~ 30 минут количество потерь в секунду резко увеличивается. Я делаю ifconfig wlp4s0 down && ifconfig wlp4s0 up и всё становиться сново нормально, причём с открытыми сайтами. Объясните мне почему так.

./cctest c 100000
client
Window  1 Speed    1 Error   1 ~ 1.4 KByte ~ 11.6 KBit
Window  4 Speed  279 Error  18 ~ 395.1 KByte ~ 3.2 MBit
Window  3 Speed  168 Error  18 ~ 237.9 KByte ~ 1.9 MBit
Window  1 Speed  936 Error  14 ~ 1.3 MByte ~ 10.9 MBit
Window  2 Speed  163 Error  18 ~ 230.8 KByte ~ 1.9 MBit
Window  1 Speed  453 Error  16 ~ 641.5 KByte ~ 5.3 MBit
Window  1 Speed  139 Error  18 ~ 196.8 KByte ~ 1.6 MBit
Window 14 Speed  536 Error  16 ~ 759.0 KByte ~ 6.2 MBit
ifconfig wlp4s0 down && ifconfig wlp4s0 up
./cctest c 100000
client
Window  1 Speed    1 Error   1 ~ 1.4 KByte ~ 11.6 KBit
Window 52 Speed 2666 Error   3 ~ 3.7 MByte ~ 30.9 MBit
Window 51 Speed 2532 Error   4 ~ 3.5 MByte ~ 29.4 MBit
Window 25 Speed 2517 Error   5 ~ 3.5 MByte ~ 29.2 MBit
Window 25 Speed 2525 Error   4 ~ 3.5 MByte ~ 29.3 MBit
Window 25 Speed 2528 Error   4 ~ 3.5 MByte ~ 29.3 MBit
Window 17 Speed 2680 Error   5 ~ 3.7 MByte ~ 31.1 MBit
Window 16 Speed 2454 Error   4 ~ 3.4 MByte ~ 28.5 MBit
Window 22 Speed 2702 Error   4 ~ 3.7 MByte ~ 31.3 MBit
Window 26 Speed 2722 Error   4 ~ 3.8 MByte ~ 31.6 MBit

Причём после того как количество потерь выросло, даже выключкние браузера ничего не меняет.

 , ,

Ingvar2145
()

Tcp в Linux

Объясните пожалуйста связаны ли описатели(fd) сокета и соединения. И если да то как? Моё предположение сокет фильтрует пакеты и распределяет их по соединениям. Тогда как соединение их принимает от другого описателя(fd сокета)?

Ещё: если соединение отправляет данные через сокет, то откуда система знает что соединение хочет что-то отправить? Каждый раз проходится по всем соединениям? Или там используются таймеры?

Подразумевается что сокет = socket(), а соединение = connect/accept().

 , ,

Ingvar2145
()

Почему не сходятся размеры пакетов?

Есть в Linux функция sendmsg. Я создал сокет с возможностью отправлять свой ip заголовок и udp. Я вызвал функцию с размером пакета 1500, возникает ошибка message too long и она не уходит пока я не понижаю размер до 1480. Но ведь максимальный mtu 1500? А в wireshark размер моих пакетов 1494, почему? Откуда ещё 14 байт?

 ,

Ingvar2145
()

Последний вопрос про идеи.

Зачем нужен RUDP - обычный UDP, но с гарантией доставки? Что можно изучить после написания RUDP на С?

 , ,

Ingvar2145
()

Идеи для программирования

Стоит ли писать свой Voice Chat или нет? Ведь таких программ уже много. Вообще нужны идеи для программ в которых нужен UDP.

 

Ingvar2145
()

Таблица из Git клиентов.

Я собрал практически всех Git клиентов в одну таблицу. Можете её дополнить.

NameLanguageGUI
Git Colapythonqt
Magit?terminal
Qlientc++qt
Klientc++qt
MeGitJava?
GitAheadc++qt
GitG??
UnGitjs?
FuGitIVEvimscript?
lazyGitgo?
Guitarc++qt
GitUI?terminal
Gigglecgtk+
Aurees??
Fiend??
Breezeshellterminal
Vinepythonqt
GitGuipython?
Gittyupc++qt
GitOnicpython?
GitNuroKotlin?
Glintrust?

 ,

Ingvar2145
()

RSS подписка на новые темы