Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 23

Поблема с записью в сокет

15.10.2013, 17:22. Показов 1184. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, есть QbyteArray, который я пытаюсь передать по сокету:

Серверная часть:
C++ (Qt)
1
2
3
4
5
6
7
  QbyteArray sbuff;
  ...
  clientSocket->write(sbuff, sbuff.size());
  if (clientSocket->waitForBytesWritten())
  {
    qDebug() << "Time Limit";
  }
При этом sbuff.size() равен примерно 22000 и всегда процесс приходит в Time Limit, как бы я не изменял параметр в скобках waitForBytesWritten()
По идее 22000 не так уж и много, может нужно как-то по другому записывать?

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

Вот прием клиента:
C++ (Qt)
1
QByteArray recvbuff = socket->readAll();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2013, 17:22
Ответы с готовыми решениями:

Поблема с Ming32-make.exe
Доброго дня (ночи). Такая проблема. Стоит Windows XP SP 3. Поставил Пакет Qt 4.7.0. Qt Creator - версия 2.0.1. По учебнику по...

Материнка 775 сокет и процессор 771 сокет, Совместимость
Ребят помогите пожалуйста, попробовал разобраться Сам и только запутался больше... Вообщем имеется материнка g31t-m rev 1.0 вот ссылка...

4 планки Apacer DDR3 по 4Gb/1333MHz от старой МВ сокет 775 могу ли я их использовать на сокет 2011
недавно решил перейти с LGA775 на LGA2011. Финансы урезаны поэтому пока приобрёл только процессор Intel Core i7 - 3820 oem, 3.60GHz/ 10 MB/...

6
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
15.10.2013, 18:41
Во первых
C++ (Qt)
1
2
3
QbyteArray sbuff;
  ...
clientSocket->write(sbuff);
Во вторых
Returns true if a payload of data was written to the device; otherwise returns false (i.e. if the operation timed out, or if an error occurred).
а значит
C++ (Qt)
1
2
3
4
if (!clientSocket->waitForBytesWritten())
  {
    qDebug() << "Time Limit";
  }
0
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 23
15.10.2013, 20:49  [ТС]
ну разумеется так и есть, просто копировал криво, прошу прощения, все так
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
16.10.2013, 11:08
имхо, лучше передавать в цикле, пакетами размером <=MTU т.е. максимум по 1500 байт, и перед отправкой каждого последующего пакета дожидаться "ответа" о приеме предыдущего, иначе буфер передатчика и приемника переполниться и будет разрыв соединения.
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
16.10.2013, 15:41
Цитата Сообщение от oxotnik Посмотреть сообщение
имхо, лучше передавать в цикле, пакетами размером <=MTU т.е. максимум по 1500 байт, и перед отправкой каждого последующего пакета дожидаться "ответа" о приеме предыдущего, иначе буфер передатчика и приемника переполниться и будет разрыв соединения.
Нет. Не лучше и разрыва не будет.
0
16.10.2013, 17:18

Не по теме:

Цитата Сообщение от NoMasters Посмотреть сообщение
Не лучше и разрыва не будет
Я до некоторых пор тоже так думал, пока всю ночь перед сдачей проекта не просидел. Правда сокеты не КуТишные были, но сути это не меняет.

0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
16.10.2013, 21:34
Цитата Сообщение от oxotnik Посмотреть сообщение
Я до некоторых пор тоже так думал, пока всю ночь перед сдачей проекта не просидел. Правда сокеты не КуТишные были, но сути это не меняет.
Не надо думать, надо знать.
ТС по всей видимости использует TCP, если буфер принимающей стороны заполнится, отправляющая просто подождёт пока его вычитают, разрыва не будет пока одна из сторон(ну или кто-либо между ними) это не захочет.
И здесь совершенно не важно, используется ли в качестве обёртки Qt или нет.
А отправка потоковых данных кусками меньшими, чем MTU, только создаёт лишний трафик и нагромождения костылей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2013, 21:34
Помогаю со студенческими работами здесь

Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093).
Добрый день. Пытаюсь сделать соединение, использующее два канала обмена данными - TCP для управления в режиме клмиента, и UDP - для...

Доработать сокет клиента и сокет сервера
Есть клиент с адресом 192.168.73.2 и сервер (192.168.73.145). Необходимо с помощью низкоуровневого сокета SOCK _ RAW разработать генератор...

Вирусы под гостевой записью и записью админа
Добрый день! у меня такой вопрос. Может ли вредоносная программа, поразившившая гостевую учетную запись затем работать под записью...

Поблема с гостевой
Добрый день!Подскажите как исправить ошибку, второй день мучаюсь ничего не получается!Взял пример Гостевой книги из пособия. Протестил на...

Поблема с табуляцией
1. public static void main(String args) { String header = &quot;\n\tКолонка1\t\tКолонка2\tКолонка3\tКолонка4\n&quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru