Local Socket comms - пропущенные пакеты - PullRequest
0 голосов
/ 12 февраля 2019

Использование QLocalServer и QLocalSocket для создания соответственно классов сервера и клиента.

server:

SocketServer(const QString& name, QObject* prnt=nullptr)
  : QObject(prnt),
    m_server(new QLocalServer(this)),
    m_name(name)
{
  connect(m_server, &QLocalServer::newConnection, this, &SocketServer::handleNewConnection);
}

bool SocketServer::start()
{
   if (!m_server->isListening()) {
     m_server->listen(m_name);
   }
   return m_server->isListening();
}

void SocketServer::handleNewConnection()
{
    QLocalSocket* socket = m_server->nextPendingConnection();
    connect(socket, &QLocalSocket::disconnected, socket, &QLocalSocket::deleteLater);
    connect(socket, &QLocalSocket::readyRead, [&, socket]() {
        QByteArray data(socket->readAll());
        qDebug() << data;        
    });
}

client:

QLocalSocket* client = new QLocalSocket(this);
client->setServerName("myServer");    
connect(client, &QLocalSocket::connected, this, [client]() {
  for (int i = 1; i <= 100; ++i) {
        client->write(QStringLiteral("Update status: ") + QString::number(i));
    }
});
client->connectToServer();

Из них100 сообщений от клиента, только 5 или 6 появляются на стороне сервера.Пробовал звонить flush() и после отправки сообщения на стороне клиента.Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...