Сокет не async_read

Вы можете увидеть, как использовать слой VAE для извлечения усредненных реконструкций из вариационного примера .

Существует два способа получения реконструкции из вариационного уровня. Стандартом является generateAtMeanGivenZ, который вычерчивает образцы из слоя и даст вам среднее значение. Если вам нужны необработанные образцы, вы можете использовать generateRandomGivenZ. См. страницу javadoc для всех других методов.

0
задан AlexINF 20 January 2019 в 11:58
поделиться

1 ответ

Вы действительно подключаетесь к удаленному разъему? Например. через socket::async_connect()? Если нет, откуда следует читать данные?

Здесь есть еще одна проблема:

boost::array<unsigned char, 128> buf;
        boost::asio::async_read(socket_, boost::asio::buffer(buf),
            boost::bind(&tcp_connection::handle_readConnection, shared_from_this(), boost::asio::placeholders::error, boost::ref(buf)));

Вы просите asio асинхронно считывать данные в буфер, который находится в стеке. Как только функция возвращает адрес (который еще сохраняет asio), он становится недействительным, и попытка чтения может перезаписать любой тип памяти в стеке. Начиная с этого момента вы более или менее настроены неопределенно, что может быть причиной того, что обратный вызов никогда не вызывается. Буфер должен всегда переживать продолжительность попытки чтения.

Еще одна вещь, где время жизни должно быть действительным, относится к io_ref. Оно не должно быть уничтожено, пока активен какой-либо экземпляр tcp_connection::pointer. Поскольку мы не видим этот код, трудно сказать. Если это глобальная переменная или часть основной функции, то, вероятно, все в порядке.

0
ответ дан Matthias247 20 January 2019 в 11:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: