Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поблема с записью в сокет
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
vaansk
Добрый день, есть QbyteArray, который я пытаюсь передать по сокету:

Серверная часть:
  QbyteArray sbuff;
  ...
  clientSocket->write(sbuff, sbuff.size());
  if (clientSocket->waitForBytesWritten())
  {
    qDebug() << "Time Limit";
  }


При этом sbuff.size() равен примерно 22000 и всегда процесс приходит в Time Limit, как бы я не изменял параметр в скобках waitForBytesWritten()
По идее 22000 не так уж и много, может нужно как-то по другому записывать?

Если кидаю маленькие sbuff, то все нормально доходит и клиент принимает.

Вот прием клиента:
QByteArray recvbuff = socket->readAll();


Прошу помощи
vaansk
опечатался, естественно

if (!clientSocket->waitForBytesWritten())
{...
AD
Сокет UDP или TCP? Передача broadcast или нет? Поподробнее опишите проблему.
vaansk
tcp, не broadcast
AD
Цитата(vaansk @ 15.10.2013, 21:39) *
tcp, не broadcast

А какую ошибку выдает? Попробуйте посмотреть ошибку сокета, что выдал QTcpSocket.
Iron Bug
это может быть системным ограничением. например, в венде по умолчанию 5 секунд на пакет. меняется это значение в реестре:
http://support.microsoft.com/kb/170359
вообще, большие пакеты не есть хорошо: они тормозят работу всей системы.
vaansk
как вручную разбивать на пакеты?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.