<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; [Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=25669</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=25669&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «[Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости».]]></description>
		<lastBuildDate>Fri, 21 Dec 2012 20:12:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: [Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=315958#p315958</link>
			<description><![CDATA[<p>Т.к. время прижало не разбирался с этим, а переписал на Python&#039;е и всё заработало.</p>]]></description>
			<author><![CDATA[null@example.com (Osanve)]]></author>
			<pubDate>Fri, 21 Dec 2012 20:12:54 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=315958#p315958</guid>
		</item>
		<item>
			<title><![CDATA[Re: [Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=315601#p315601</link>
			<description><![CDATA[<p>Отладка показала, что происходит отправка 27мми пакетов, а принимается по какой-то причине только 25. Никак не могу понять в чем может быть причина.</p>]]></description>
			<author><![CDATA[null@example.com (Osanve)]]></author>
			<pubDate>Thu, 20 Dec 2012 07:15:52 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=315601#p315601</guid>
		</item>
		<item>
			<title><![CDATA[Re: [Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=315587#p315587</link>
			<description><![CDATA[<p>Особо в код не вчитывался, но с ходу водник вопрос вы уверены, что ваш файл пересылается одним пакетом?</p><p>При помощи&nbsp; qDebug поглядите на число байт получаемых soket-&gt;readDatagram; посмотрите на вывод pendingDatagramSize(), и сравните эту информацию с размером файла</p>]]></description>
			<author><![CDATA[null@example.com (voral)]]></author>
			<pubDate>Thu, 20 Dec 2012 04:46:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=315587#p315587</guid>
		</item>
		<item>
			<title><![CDATA[[Qt] Передача файла через QUdpSoket с шифрованием и замерос скорости]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=315584#p315584</link>
			<description><![CDATA[<p>Доброго времени суток!</p><p>При выполнении лабораторной работы столкнулся со следующей проблемой.</p><p>Инициализирую сокет следующим образом:<br /></p><div class="codebox"><pre><code>    soket = new QUdpSocket();
    _port = 1234;
    soket-&gt;bind(QHostAddress::Any, _port);</code></pre></div><p>Осуществляю передачу файла и текста:<br /></p><div class="codebox"><pre><code>void MainWindow::sendMessage(QString msg)
{
    QByteArray data;
    QDataStream out(&amp;data, QIODevice::WriteOnly);
    out &lt;&lt; qint64(0);
    out &lt;&lt; qint8(TYPE_MESSAGE);
    out &lt;&lt; msg;
    out.device()-&gt;seek(qint64(0));
    out &lt;&lt; qint64(data.size() - sizeof(qint64));
    soket-&gt;writeDatagram(data, QHostAddress::Broadcast, _port);
}

void MainWindow::sendFile(QString filePath, QString fileName)
{
    if(file != NULL)
        return;

    file = new QFile(filePath);
    if(file-&gt;open(QFile::ReadOnly)) {
        QByteArray data;
        QDataStream out(&amp;data, QIODevice::WriteOnly);

        sendPartsOfFile();
    } else
        return;
}

void MainWindow::sendPartsOfFile()
{
    while(!file-&gt;atEnd()) {
        QByteArray block = file-&gt;read(qint64(4069));
        QByteArray data;
        QDataStream out(&amp;data, QIODevice::WriteOnly);
        out &lt;&lt; qint64(0);
        out &lt;&lt; qint8(TYPE_FILE);
        out &lt;&lt; block;
        out.device()-&gt;seek(qint64(0));
        out &lt;&lt; qint64(data.size() - sizeof(qint64));
        soket-&gt;writeDatagram(data, QHostAddress::Broadcast, _port);
    }
    file-&gt;close();
    file = NULL;
}</code></pre></div><p>И приём всего этого дела:<br /></p><div class="codebox"><pre><code>void MainWindow::read()
{
    QByteArray data;
    data.resize(soket-&gt;pendingDatagramSize());
    QHostAddress *address = new QHostAddress();
    soket-&gt;readDatagram(data.data(), data.size(), address);

    QDataStream in(&amp;data, QIODevice::ReadOnly);

    qint64 size = -1;
    if(in.device()-&gt;size() &gt; sizeof(qint64))
        in &gt;&gt; size;
    else
        return;
    if(in.device()-&gt;size() - sizeof(qint64) &lt; size)
        return;

    qint8 type = -1;
    in &gt;&gt; type;
    if(type == TYPE_FILE) {
        QByteArray block;
        in &gt;&gt; block;
        QFile newFile(&quot;tmp.png&quot;);
        if(newFile.open(QFile::Append))
            newFile.write(block);
        newFile.close();
    }
    if(type == TYPE_MESSAGE) {
        QString message;
        in &gt;&gt; message;

        QTextCursor cursor(ui-&gt;textEdit-&gt;textCursor());
        cursor.movePosition(QTextCursor::End);
        cursor.insertText(message);
    }
}</code></pre></div><p>Сообщения приходят нормально, а вот файл по какой-то причине сохраняется неполностью (проверяю на картинке). В чем может заключаться проблема?</p><p>Также интересует каким образом лучше всего осуществить шифрование передаваемых данных и замер скорости передачи данных.</p><p>Заранее благодарю.</p>]]></description>
			<author><![CDATA[null@example.com (Osanve)]]></author>
			<pubDate>Thu, 20 Dec 2012 00:03:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=315584#p315584</guid>
		</item>
	</channel>
</rss>
