13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
.NET 4.x

Прокси-сервер: как вывести некоторые операции в отдельный поток

06.09.2012, 20:10. Показов 1407. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно у меня прокси сервер получает пакет и обрабатывает, но пока он обрабатывает - другие не могут пройти, нужно обработку вынести в отдельный поток, как это сделать правильно, сколько будет этих потоков - я не знаю?

Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2012, 20:10
Ответы с готовыми решениями:

Как вывести в отдельный поток?
Вот код программы. Прога щелкает мышкой в определенные координаты экрана, через определенный промежуток времени заданный в ...

Вывести действие в отдельный поток
доброго времени суток, уважаемые.Как вывести в отдельный поток пинг хостов, дабы не подвешивать GUI ?на форме datagridview и...

Вывести рекурсивную функцию в отдельный поток
Ребят, я с потоками вообще дел не имел, помогите с наименьшими переделками изменить программу. Для ясности я сделал простейшую модель...

8
29 / 31 / 2
Регистрация: 14.04.2012
Сообщений: 152
06.09.2012, 20:35
мб часть кода дашь?
0
432 / 433 / 93
Регистрация: 16.07.2012
Сообщений: 886
06.09.2012, 21:09
Сделайте два потока - один получает пакеты и помещает их в очередь, а второй читает пакеты из очереди и обрабатывает их. Таким образом если вдруг какой-то пакет будет очень долго обрабатываться во втором потоке, то первый поток тем временем сможет получать новые пакеты и заполнять пока очередь.
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
06.09.2012, 21:14  [ТС]
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
if (serverClientStream.DataAvailable)
                            {
                                
                                
                                    byte[] receivebuffer = new byte[10000];
                                    int count_receive = serverClientStream.Read(receivebuffer, 0, 10000);
                                    byte[] receive_data = new byte[count_receive];
                                    Array.Copy(receivebuffer, receive_data, count_receive);
                                    string prrr = System.Text.Encoding.UTF8.GetString(receive_data);
                                    /////////////////////////////////////////////////////////////////
 
                                    if (prrr.IndexOf("INV") > -1)
                                    {
                                        int first = prrr.IndexOf("INV") + 12;
                                        prrr = prrr.Remove(first, 1);
                                        prrr = prrr.Insert(first, "0");
                                    }
 
                                    /////////////////////////////////////////////////////////////////
 
                                    receive_data = System.Text.Encoding.UTF8.GetBytes(prrr);
                                    socksClientStream.Write(receive_data, 0, receive_data.Length);
                                    Console.WriteLine("writing " + receive_data.Length.ToString() + " to socks initiator");
                                
                            }

то что выделено, нужно как раз - таки в поток и вынести, но сколько их будет, я не знаю
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.09.2012, 21:24
hiphone, тупо сделайте очередь обычную, в каком-нибудь backgroundworker'е, и все, получаете основным потоком, суете в очередь, бекграунд тем временем из него достает и пользуется.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.09.2012, 21:29
Цитата Сообщение от hiphone Посмотреть сообщение
сколько их будет, я не знаю
если предполагается в пределах двадцати - испльзуй пул (как ты и тему озаглавил)
кстати, если тебе производительность важна, почему ты индекс тега дважды вылавливаешь? один раз получи, и потом только используй.
кроме того, ты полученное в выделенном участке тут же используешь. какая разница - будешь ты ждать, пока в потоке обработается твой строчка, или прямо тут будешь ее обрабатывать? ведь тебе она нужна уже обработанная.
пересмотри еще раз повнимательней всю архитектурку.
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
06.09.2012, 21:42  [ТС]
СОбственно пакеты приходят от игры, и их 1-3 в секунду и пока они обрабатываются, то игра висит, поэтому я и думал в несколько одновременно
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
07.09.2012, 22:48  [ТС]
проблема видимо в моем сокс прокси, может ли кто-нибудь скинуть исходники сокс прокси?
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
09.09.2012, 14:10  [ТС]
ап...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2012, 14:10
Помогаю со студенческими работами здесь

Вывести индикатор копирования в отдельное окно и отдельный поток
привет, знаю что уже неоднократно был этот вопрос, но все-таки не могу понять. есть программа, все работает, 2 прогресс бара тоже...

Вывести скачивание файлов в отдельный поток и отобразить прогресс в ProgressBar'е
Добрый всем день. Хочу вывести скачивание файлов в отдельный поток и отобразить прогресс в ProgressBar'е. При запуске, ProgressBar ничего...

Как запустить отдельный поток
Как запустить часть кода в отдельном потоке. Пробовал так: public void func (){ this.Invoke((MethodInvoker)delegate(){ ...

Как создать отдельный поток ?
Привет Как вызвать функцию WriteBlockSe в новом потоке, а то форма тормозит. Заранее спасибо public void...

Как сделать отдельный поток в C++?
Скажите как сделать отдельный поток в C++


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. ) Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
Мысли в слух
kumehtar 29.10.2025
Обнаружил, что мысли лучше писать короткими фразами. Таким образом внимание читателя успевает охватить всю фразу сразу, за один раз, не соскакивая и не прерываясь. А если писать это длинным текстом,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru