|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.09.2017, 11:21 | #1 |
Пользователь
Регистрация: 10.04.2017
Сообщений: 66
|
Выбирается случайный порт при перезапуске
Здравствуйте. Я пишу скромный сервер. Есть 2 проблемы. При запуске, точнее при перезапуске, выбирается случайный порт. В коде четко задан 80 порт, но при перезапуске сервера он выбирает рандомный. Что бы он запустился на 80 нужно немного подождать. Из за чего это может быть?
И второй вопрос. Как правильно распаралелить выполнение? Код сервера: Код:
Код:
|
11.09.2017, 11:47 | #2 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Андрей Цапко
Цитата:
Помниться я смотрел код апача что-бы выяснить как уменьшить паузу для смены. Цитата:
Вот только имеет смысл использовать бустовские потоки, как самые проработанные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
11.09.2017, 11:53 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Учтите, что время создания одного потока может быть до нескольких сотен мс. Когда потоки скопятся в пуле они уже будут быстро создаваться. Вернее просто будут выбираться из пула, что снизит время создания до мкс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
11.09.2017, 11:59 | #4 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 742
|
- а тут равно или присваивание?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
11.09.2017, 12:12 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Cuprum5
Присвоение, мы одобряем входящее соединение и одновременно создаём входящий сокет. Так что тут верно, что должно быть присвоение. А если есть ошибка, то вместо сокета будет признак-ошибки, а он отрицательный. accept(2) Но такой стиль ведёт к ошибкам, так что лучше разделить сравнение и присвоение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
11.09.2017, 16:38 | #6 |
Пользователь
Регистрация: 10.04.2017
Сообщений: 66
|
выбирался случайный порт который прослушивался. Это было из за того что на соединение от старого сервера было не до конца закрыто. Я немного подправил пограмму, но у меня теперь при попытке загрузить 2 страницы одновременно вызвается сегментирование памяти. Есть подозрение что я не правильно работаю с потоками, но документации которая мне помогла бы я найти не смог.
Код:
|
11.09.2017, 16:47 | #7 |
Пользователь
Регистрация: 10.04.2017
Сообщений: 66
|
Ещё я не могу понять, почему по домену, привязанному к ip адресу по которому я захожу, я зайти не могу. Браузер просто опускает запрос и он вроде бы не доходит до сервера.
P.S. Разобрался. У меня был запущен опенсервер который менял ip адрес домена. Последний раз редактировалось Андрей Цапко; 11.09.2017 в 17:07. |
11.09.2017, 17:59 | #8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
1) неправельно работаешь с открытыми массивами параметров.
В handler неправельно описан. Подтянутся проС++ расскажут как правильно. А пока советую уменьшить до 1 - параметра. См https://stackoverflow.com/questions/...threading-in-c 2) у браузера тайм-аут на accept 2.5 секунды. Так что пока ты моргал и задумывался какую кнопку жать - браузер успел разорвать соединение. Поэтому отучиваемся от отладчика переходим на логированиее и модульное тестирование.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
11.09.2017, 18:16 | #9 |
Пользователь
Регистрация: 10.04.2017
Сообщений: 66
|
Я убрал ссылки на переменные и передаю просто переменные в handler. Ошибка с сегментацией осталась но появляется не раз в 10 запросов а раз в 1000 запросов, но мне все равно кажется, что запросы будут обрабатываться по очереди. Немного не понял про " у браузера тайм-аут на accept 2.5 секунды". Что вы имеете ввиду? То что браузер спустя 2.5 секунды обрывает соединение если сервер его не принял? В общем задача такая, что бы сервер обрабатывал 2 вида запросов (GET и POST) и передавал его в другую программу через сокет ( как прокси nginx). При этом сервер должен сделать это быстрее чем nginx (обработки запроса по большому счету меньше). Запрос будет перенаправлен на 1 из двух серверов в зависимости от метода и сервер должен передать только путь и какие то из параметров (допустим host, user-agent и accept-lagneage)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DBCheckBox не выбирается | Scorpuha | БД в Delphi | 4 | 14.01.2014 11:19 |
При подключении на открытый порт Connect возвращает -1 | Nullerset | C/C++ Сетевое программирование | 2 | 28.12.2013 15:33 |
Случайный Access Violation при добавлении новой записи | alm4 | Общие вопросы Delphi | 3 | 16.07.2012 10:23 |
Проблема при передаче через Com-порт | ShlakBaum | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 01.02.2010 21:59 |
В каждой строке массива выбирается максимальный элемент | sergeyfsd | Общие вопросы Delphi | 2 | 13.05.2008 00:10 |