Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407

Udp сендер пропускает пакеты на максимальной скорости передачи

15.07.2024, 13:13. Показов 2646. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу скажу, что не очень разбираюсь в udp серверах и клиентах так, так что в объяснении могут быть неточности
Короче написал я udp приемник простой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        private CancellationTokenSource? _cts;
        int cnt;
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }
        public int Cnt 
        {
            get => cnt;
            set => Set(ref cnt, value);
        }
 
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var button = (Button)sender;
 
            _cts = new();
            using var udp = new UdpClient(1233);
 
            try { await ProcessMessages(udp, _cts.Token); }
            finally { }
        }
 
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            _cts?.Cancel();
            _cts?.Dispose();
            _cts = null;
        }
        private async Task ProcessMessages(UdpClient udp, CancellationToken ct)
        {
            await foreach (var message in ReceiveMessages(udp, ct))
            {
            }
        }
 
        async IAsyncEnumerable<byte[]> ReceiveMessages(UdpClient udp, [EnumeratorCancellation] CancellationToken ct)
        {
            UdpReceiveResult result;
            while (!ct.IsCancellationRequested)
            {
                try { result = await udp.ReceiveAsync(ct); }
                catch (OperationCanceledException) { yield break; }
 
                Cnt++;
                yield return result.Buffer;
            }
        }
Он ничего не делает кроме как принимает пакеты и считает их кол-во, но даже при таком раскладе если мне шлют пакеты с задержкой в 15мс(как я понял это максимальная скорость на винде), то я начинаю терять пакеты, если брать половину этой скорости то вроде все нормалально, я подозреваю что моя программа не успевает выгребать эти пакеты из буфера винды, потому что я смотрел в Wireshark и он каким-то образом умудряется принять все пакеты еще и отображать их в GUI c какой скоростью ему не пошлешь, а мне в идеале еще нужно записывать эти пакеты в файл и возможно небольшой анализ и обработку проводить, что соответственно еще уменьшит скорость, вопрос в том есть ли какие-то методы, решения которые помогли бы мне принимать на такой скорости пакеты и хотя б просто писать их в файл?

Добавлено через 2 минуты
Блин, ошибся в названии темы, речь конечно идет за UDP ресивер, а не сендер
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2024, 13:13
Ответы с готовыми решениями:

Рассчет максимальной скорости передачи данных
Рассчитать максимальную скорость передачи данных по каналу связи с шириной полосы пропускания 100 МГц, если мощность сигнала составляет 62...

Спектральная плотность при максимальной скорости передачи информации
какой алгорит решние

Не пропускает пакеты
Добрый день. Подскажите пожалуйста где посмотреть в FortiGate 100E что не пропускает пакеты пользователя. Пинг идет если на 8.8.8.8 но...

42
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
16.07.2024, 17:55
Студворк — интернет-сервис помощи студентам
Это receiver:
Миниатюры
Udp сендер пропускает пакеты на максимальной скорости передачи  
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
16.07.2024, 18:04
Только я не могу понять, зачем вы с этим воюете? UDP, по определению, работает на отвяжись (в книгах пишут "по принципу максимальных усилий", что не совсем понятно, о чем идет речь).
Хотите надежности? - Используйте TCP.
Если позволительно, в UDP надежнось компенсируют 1) избыточностью, то есть слать один и тот же пакет пока получатель не вернул подтверждение 2) своим прикладным бинарным протоколом поверх, проверяющим порядок и целостность пакетов.

Добавлено через 6 минут
Тут наверно от железа скорее еще зависит.
В прикладном коде вызова метода Send на отправителе означает что, пакет данных ушел с прикладного уровня на уровень ОС (сетевой стек хоста), и остальное его уже не заботит. Дальше ОС сама рулит. То есть отправлять всегда проще. А вот принимать сложнее, но в этом плане у UDP просто, поэтому и по принципу максимальных усилий - попробовал, не получилось, ну и ладно, отбросили пакет.
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
16.07.2024, 18:10  [ТС]
wizard41,
Вложения
Тип файла: rar sender_udp.rar (6.94 Мб, 6 просмотров)
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
16.07.2024, 18:14
Цитата Сообщение от IamRain Посмотреть сообщение
В прикладном коде вызова метода Send на отправителе означает что
Эм, сумбурно написал, поправочка: когда вызов возвращает управление, это значит что данные ушли в сетевой стек.

Добавлено через 1 минуту
firnen_dragon, так вы не ответили на вопрос.
0
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
16.07.2024, 18:15  [ТС]
IamRain, Да тут видите какое дело, те с кем мы работаем, че-то делают, а потом говорят нам ну вы сделайте так чтоб все нормально записывалось как хотите, ну а я потом и пытаюсь подстроиться под их эти посылки с "гов*ом"
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
16.07.2024, 19:06
1. UDP хоть нумеруются? А то фиг соберешь их потом.
2. Размер пакета? Я могу ошибаться, но UdpClient отсылая N-байт, как-то это пакует что вы либо гарантированно получите все N-байт (и пофиг как там дробится), либо потеряете всё, даже если пришел хотя бы один кусок. При плохой связи можете только смириться что данные будут теряться, но можно хотя бы сильно не раздувать пакет, в идеале нужно укладываться в MTU (дефолтный 1500, но нужно понимать что всякие VPN будут отжирать байты).
3. Локально поток в 1кБ раз в 15мс должно пережевывать на раз. Это по сути до 1МБ/с, что вообще ни о чем на современном железе.

может чуть позже гляну последний архив, но стоит обратить внимание на первые ответы: не привязывать обработку сообщения к UI, и по возможности держать очередь.
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 12:01  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
UDP хоть нумеруются?
нумеруются

Добавлено через 11 минут
Цитата Сообщение от Wolfdp Посмотреть сообщение
Локально поток в 1кБ раз в 15мс должно пережевывать на раз.
Это в случае, если поток нормально распределен по сети, а тут 60 склеенных пакетов через 15мс, он не успевает разгребать, и пакет вылетают из буфера винды, если б приходил 1 пакет раз в 200 микросекунд, тогда у проги было бы время на разгребание этих пакетов, а скорость была бы такой же

Добавлено через 1 минуту
Цитата Сообщение от Wolfdp Посмотреть сообщение
не привязывать обработку сообщения к UI, и по возможности держать очередь
Это действительно полезно было, ща разбираюсь с очередями

Добавлено через 1 час 4 минуты
IamRain, Я тут переписал под Channel-ы, добавил запись в файл
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
private CancellationTokenSource? _cts;
private readonly Channel<byte[]> write_channel = Channel.CreateUnbounded<byte[]>();
private readonly Channel<int> cnt_channel = Channel.CreateUnbounded<int>();
string directoryPath;
string filePath;
FileStream fs;
Task processMessagesTask;
Task recordTask;
Task cntUpdate;
int cnt;
public MainWindow()
{
    InitializeComponent();
    DataContext = this;
    directoryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "//" + "Data";
    filePath = directoryPath + "//" + "" + DateTime.Now.ToString("HH_mm_ss") + ".bdi";
}
public int Cnt 
{
    get => cnt;
    set => Set(ref cnt, value);
}
 
private async void Button_Click(object sender, RoutedEventArgs e)
{
    var button = (Button)sender;
    fs = new FileStream(filePath, FileMode.Append, FileAccess.Write);
 
    _cts = new();
    using var udp = new UdpClient(1233);
 
    processMessagesTask = ProcessMessages(udp, _cts.Token);
    recordTask = Record();
 
    try 
    {
        await Task.WhenAll(processMessagesTask, recordTask);
    }
    finally {  }
}
 
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    fs.Flush();
    fs.Close();
    _cts?.Cancel();
    _cts?.Dispose();
    _cts = null;
}
private async Task ProcessMessages(UdpClient udp, CancellationToken ct)
{
    ChannelWriter<byte[]> writer = write_channel.Writer;
    await foreach (var message in ReceiveMessages(udp, ct))
    {
        writer.TryWrite(message);
    }
}
 
async IAsyncEnumerable<byte[]> ReceiveMessages(UdpClient udp, [EnumeratorCancellation] CancellationToken ct)
{
    UdpReceiveResult result;
    while (!ct.IsCancellationRequested)
    {
        try { result = await udp.ReceiveAsync(ct); }
        catch (OperationCanceledException) { yield break; }
        //Cnt++;
        yield return result.Buffer;
    }
}
private async Task Record()
{
    try
    {
        ChannelReader<byte[]> reder = write_channel.Reader;
        while (true) 
        {
            byte[] data = await reder.ReadAsync();
            fs.Write(data, 0, data.Length);
        }
    }
    catch (Exception e)
    {
    }
}
Но я не пойму как мне с помощью них обновлять форму, допустим я наращиваю cnt и кладу в канал cnt_channel, и запускаю еще один асинхронный метод который забирает оттуда cnt и обновляет форму, а форму я обновляю через Invoke же из другого потока, т.е. остальные потоки по идее должны остановиться пока работает UI поток и толку не будет особо от очереди тогда. Я по любому что-то недопонимаю, объясните пожалуйста.

Добавлено через 5 минут
И еще вот вопросик есть, если я записываю в канал синхронно, я трачу на это время ресивера или нет?
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
17.07.2024, 12:28
Цитата Сообщение от firnen_dragon Посмотреть сообщение
через Invoke же из другого потока, т.е. остальные потоки по идее должны остановиться пока работает UI поток
И тут надо делать работу асинхронно, в фоновом потоке (через Task.Run) читаем из канала, агрегируем нужный кусок данных и отправляем в контекст синхронизации (SynchronizationContext.Current) вашего WPF окна на отрисовку. Можно даже не ожидать, а через fire-and-forget.
Не забывайте, async-await дает два возможных преимущества:
- offload
- scalability.
Вот при чтении вам offload и нужен.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
17.07.2024, 12:54
Цитата Сообщение от firnen_dragon Посмотреть сообщение
я сравниваю результаты с Wireshark
у меня Wireshark на локал-хосте показывает следующую картину:
во первых, "Программа для отправки" после старта начинает сразу лупить в порт несмотря ни на что, не давая времени ОС целевого ПК выделить ресурсы для обработки пришедших пакетов, открытие порта. Поэтому, первые 60-70 пакетов всегда улетают прямо в космос, не пройдя дальше сетевого разъема на ПК.
Во вторых - нет никакой реакции на ответные ICMP "Destination unreachable"; разработчик этой прожки мог бы прикрутить хотя б небольшую задержку что-ли, при получении такого ответа.. Но нет, продолжает лупить как ни в чем не бывало.

Ну и при параметрах пакетов: кол-во:50, размер:500 байт, задержка:50 мс на данном ПК периодическая картина следующего вида:
- первые 340-360 пакетов пропущены всегда, включая те, которые улетели "в космос" не дождавшись открытия порта;
- затем идут 380-390 успешно принятых пакетов;
- после (довольно стабильно) ровно 198 пропущенных пакетов.

И т.д - 390 принято, 198 пропущено.. И это нормальное явление: видимо ОС с завидным постоянством "отвлекается" на что-то другое и не принимает пакеты в эти промежутки времени. Но в целом, все стабильно - нет никаких увеличивающихся количеств НЕ приема.

На разных ПК будет по разному, но в принципе, сам протокол UDP подразумевает некоторую "хаотичность" распределения приема/пропусков, зависящую от разных факторов.
А вот если кол-во пропусков постоянно возрастает как снежный ком, то это проблема уже не UDP а чего-то другого, требующая разбирательств.
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 14:11  [ТС]
IamRain, Я вимидимо не совсем понял
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
private readonly Channel<int> cnt_channel = Channel.CreateUnbounded<int>();
int cnt;
 
public int Cnt 
{
    get => cnt;
    set => Set(ref cnt, value);
}
 
private async void Button_Click(object sender, RoutedEventArgs e)
{
 
    //...
 
    formUpdate = FormUpdate();
 
    try 
    {
        await Task.WhenAll(formUpdate);
    }
    finally { /*button.Enabled = true;*/ }
}
 
private async Task ProcessMessages(UdpClient udp, CancellationToken ct)
{
    ChannelWriter<int> cntWriter = cnt_channel.Writer;
    int cnt = 0;
    await foreach (var message in ReceiveMessages(udp, ct))
    {
        cnt++;
        cntWriter.TryWrite(cnt);
    }
}
 
async IAsyncEnumerable<byte[]> ReceiveMessages(UdpClient udp, [EnumeratorCancellation] CancellationToken ct)
{
    UdpReceiveResult result;
    while (!ct.IsCancellationRequested)
    {
        try { result = await udp.ReceiveAsync(ct); }
        catch (OperationCanceledException) { yield break; }
 
        yield return result.Buffer;
    }
}
private async Task FormUpdate() 
{
    ChannelReader<int> reder = cnt_channel.Reader;
    SynchronizationContext? sc = SynchronizationContext.Current;
    while (true) 
    {
        sc.Send(async x => Cnt = await reder.ReadAsync(), null);
    }
}
как пользоваться SynchronizationContext в рамках mvvm? Я вроде обновляю а gui не обновляется
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
17.07.2024, 14:15
Цитата Сообщение от firnen_dragon Посмотреть сообщение
как пользоваться SynchronizationContext в рамках mvvm?
https://www.cyberforum.ru/ado-... st17354341
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 14:29  [ТС]
Andrey-MSK, Все равно не понимаю че я не так делаю, вроде написал как у вас
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        public MainWindow()
        {
            ViewContext = SynchronizationContext.Current;
        }
        public SynchronizationContext? ViewContext { get; set; }
 
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            try 
            {
                processMessagesTask = ProcessMessages(udp, _cts.Token);
                recordTask = Record();
                formUpdate = FormUpdate();
 
                await Task.WhenAll(processMessagesTask, recordTask, formUpdate);
            }
            finally { /*button.Enabled = true;*/ }
        }
        private async Task FormUpdate()
        {
            ChannelReader<int> reder = cnt_channel.Reader;
            while (true)
            {
                ViewContext.Send(async _ => await reder.ReadAsync(), null);
            }
        }
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
17.07.2024, 14:42
Цитата Сообщение от firnen_dragon Посмотреть сообщение
вроде написал как у вас
А сам контекст где?
C#
1
ViewContext = SynchronizationContext.Current;
Добавлено через 1 минуту
firnen_dragon, Не в конструкторе, а в обработчике события полной загрузки окна получаете его контекст

Добавлено через 2 минуты
firnen_dragon,
C#
1
2
3
4
5
6
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    IPPWorkHBWindowVM vm = (IPPWorkHBWindowVM)DataContext;
 
    vm.ViewContext = SynchronizationContext.Current;
}
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 15:02  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
загрузки окна получаете его контекст
Ситуация не изменилась
C#
1
2
3
4
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ViewContext = SynchronizationContext.Current;
        }
Добавлено через 17 минут
Andrey-MSK,
я сделал так же но мне кажется дело в вызове этого метода или в самом методе, вместе с таким вызовом не работают остальные асинхронные методы почему-то, и форма полностью виснет:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        formUpdate = FormUpdate();
 
        await Task.WhenAll(processMessagesTask, recordTask, formUpdate);
 
        private async Task FormUpdate()
        {
            ChannelReader<int> reder = cnt_channel.Reader;
            while (true)
            {
                vm.ViewContext.Send(async _ => await reder.ReadAsync(), null);
            }
        }
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
17.07.2024, 15:04
firnen_dragon, Дак не метод вызывать, а И в асинхронном методе работаете с привязанной к элементу UI коллекцией
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
17.07.2024, 15:12
Цитата Сообщение от firnen_dragon Посмотреть сообщение
в рамках mvvm
Цитата Сообщение от firnen_dragon Посмотреть сообщение
private async void Button_Click
Это уже не "рамки" mvvm. Да и не нужен тебе он сейчас, сперва вообще разобраться бы без применения паттернов.
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 15:34  [ТС]
Andrey-MSK, Спасибо, так вроде обновляется
C#
1
2
3
4
5
6
7
8
9
        private async Task FormUpdate()
        {
            ChannelReader<int> reder = cnt_channel.Reader;
            while (true)
            {
                int data = await reder.ReadAsync();
                vm.ViewContext.Send(_ => vm.Cnt = data, null);
            }
        }
Добавлено через 2 минуты
wizard41, мне ж нужно чтоб это и в нормальных проектах тоже работало, а там mvvm будет

Добавлено через 9 минут
У меня очередь на запись в файл вроде работает, теперь нужно чтоб очередь на обновление gui Работала

Добавлено через 1 минуту
Andrey-MSK, У меня вот вопрос, а вот эта строка в базовой модели разве не будет тормозить все остальные потоки?
C#
1
2
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
            => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
17.07.2024, 15:50
Цитата Сообщение от firnen_dragon Посмотреть сообщение
разве не будет тормозить все остальные потоки?
А чего она должна их тормозить? Это ведь свойства которые привязаны к простым элементам UI, типа TextBox, Label, TextBlock. Они прекрасно отрабатывают из любого потока.

Коллекции, которые привязываются к списочным элементам UI, имеют тип ObservableCollection<T> (для них не задаётся INPC, они сами всех уведомляют с помощью INCC), и управляются с помощью Add(), Remove(), index[]. И вот для них уже нужна синхронизация потоков.
1
 Аватар для firnen_dragon
25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 407
17.07.2024, 17:14  [ТС]
Andrey-MSK, Ну мне просто kolorotur говорил что
Цитата Сообщение от kolorotur Посмотреть сообщение
Если свойство Cnt к чему-то привязано, то на этой строчке произойдет переотрисовка интерфейса, окончания которой вы будете ждать перед получением следующего сообщения.
Ну и по этому собственно я начал с каналами разбираться, чтоб обновлять интерфейс и писать в файл не затормаживая ресивер
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,768
Записей в блоге: 4
17.07.2024, 17:17
Цитата Сообщение от firnen_dragon Посмотреть сообщение
свойство Cnt
Это свойство какого типа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2024, 17:17

Hamachi не пропускает пакеты больше 1 кб
Памагити, меня хамачи обижает. В общем: есть туннель хамачи. Работает: пропинговка без проблем, SSH в виде putty. Не работает:...

Определить отношение максимальной скорости колебаний частиц среды к скорости распространения волны
Уравнение плоской бегущей волны, распространяющейся вдоль оси x, задано смещением частиц среды y(x,t) в виде: y( x,t )=0.005*cos200( t -...

UDP пакеты
Всем доброго времени суток!:) Подскажите, пожалуйста, как проверить какие исходящие пакеты передаются по udp протоколу? Это надо для...

Системой дропаются UDP пакеты
Есть такая ситуация. Две машины соеденины точка-точка. Одна передающая, другая принимающая. Передаются UDP пакеты. Но на принимающей...

Пакеты udp? или socket ?
Короче как мне отправить , допустим cs серверу команду status и посмотреть что пришло, каким способом я не знаю, ну ещё 1 вопрос как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru