Название: Про устойчивость сокетов Отправлено: Ced от Май 24, 2017, 14:14 Допустим, есть два процесса, обменивающиеся информацией через сокет.
Вопрос первый: Если процесс-приемник упал, может ли это приводить к падению процесса-источника в ходе записи данных в сокет? Вопрос второй: Протокол обмена организован так: Процесс-источник пишет в сокет длину передаваемого блока и за тем сам блок. Процесс-приемник считывает длину, за тем запрашивает у сокета наличие данных для считывания в таком количестве и, если получил подтверждение, читает. Если процесс-источник упал в ходе записи блока в сокет, может ли это привести к падению процесса-приемника? Код: void MyServer::sendToClient(/*QTcpSocket*/ QIODevice *pSocket, Message *toSend) Название: Re: Про устойчивость сокетов Отправлено: Пантер от Май 24, 2017, 14:34 >Если процесс-приемник упал, может ли это приводить к падению процесса-источника в ходе записи данных в сокет?
Нет. >Если процесс-источник упал в ходе записи блока в сокет, может ли это привести к падению процесса-приемника? Смотря как ты его напишешь. По-нормальному, он должен ждать полного блока данных. Если сокет рвется, он должен корректно это обработать. PS: код не смотрел. Название: Re: Про устойчивость сокетов Отправлено: Ced от Май 24, 2017, 14:48 >Если процесс-приемник упал, может ли это приводить к падению процесса-источника в ходе записи данных в сокет? Нет. >Если процесс-источник упал в ходе записи блока в сокет, может ли это привести к падению процесса-приемника? Смотря как ты его напишешь. По-нормальному, он должен ждать полного блока данных. Если сокет рвется, он должен корректно это обработать. PS: код не смотрел. Текст обмена я привел выше. Мне кажется. там есть защита от неполного блока. Или я чего-то не предусмотрел? Самое противное в этой истории то, что если в работу не вмешиваться, все работает, как часики, стоит приостановить источник, приемник мгновенно падает по RunTime. А если пытаюсь смотреть в дебагере, приемник сообщает о потере связи с источником и не думает падать. Название: Re: Про устойчивость сокетов Отправлено: Пантер от Май 24, 2017, 15:22 1. Ты весь код приемника привел.
2. По тому коду, что я вижу - работа с сокетами некорректная, не должно быть бесконечного цикла. Название: Re: Про устойчивость сокетов Отправлено: Ced от Май 24, 2017, 16:47 1. Ты весь код приемника привел. 2. По тому коду, что я вижу - работа с сокетами некорректная, не должно быть бесконечного цикла. Понял, подумаю над этим. Название: Re: Про устойчивость сокетов Отправлено: Ced от Май 24, 2017, 17:11 И все же валится он не при чтении, а при записи. И что погано, под дебагером не валится.
Название: Re: Про устойчивость сокетов Отправлено: qate от Май 25, 2017, 08:26 ничего не должно падать, ошибка гдето в коде
Название: Re: Про устойчивость сокетов Отправлено: Ced от Май 25, 2017, 18:41 ничего не должно падать, ошибка гдето в коде В итоге научился обрабатывать в одном процессе падение другого и все стало стабильно. А причину так и не нашел. |