Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Программист по неволе
 Аватар для Alex_From_777
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1

Как работать с сокетами в цикле?

24.04.2015, 11:36. Показов 1298. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Подскажите как работать с сокетами в цикле.
Нужно создать цикл. Клиент посылает запрос серверу, на что получает ответ.
Грубо говоря я посылаю серверу число, а в ответ получаю другое число.
Но вот только у меня массив этих чисел, которые необходимо отправить.
Я хочу получить такое же массив ответов.
Но как я ни пробовал, не сервер присылает лишь один ответ (на последнее число из массива).
Буду рад любой помощи)))

Вот один из тех вариантов, что пробовал я:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  a=StrToFloat(Edit4->Text);
  b=StrToFloat(Edit5->Text);
  shag=(b-a)/100;
  F[0]=a;
  ClientSocket2->Socket->SendText("CALC:MARK:STAT ON\n");
  ClientSocket2->Socket->SendText("CALC:MARK:TRAC 1\n");
  Timer1->Interval=1;
for (j=0; j<100; j++)
  {
    F[j+1]=F[j]+shag;
    StringGrid1->Cells[0][j]=FloatToStr(F[j]);
    ClientSocket2->Socket->SendText("CALC:DELT:X " +FloatToStr(F[j]) + "kHz\n");
    ClientSocket2->Socket->SendText("CALC:MARK:FUNC:NOIS:RES?\n");
  }
}
void __fastcall TForm1::ClientSocket2Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo2->Lines->Add(Socket->ReceiveText());
}
Я полагал, что цикл отправит 100 сообщений, и на каждое сообщение придёт ответ и запишется в мемо. Но приходит, как я уже говорил ответ лишь на последнее сообщение.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2015, 11:36
Ответы с готовыми решениями:

Как правильно работать с сокетами и потоками
Есть сервер и пара клиентов, которые к нему подключаются... Использую потоки, -каждый сокет в своем потоке. Клиенты передают на сервер...

Qt. как в протоколе UDP работать с несколькими сокетами?
Доброго времени суток! Есть приложение, которое постоянно принимает данные и может работать на передачу. Для это сделан 1 сокет. Можно ли...

Хочу научиться работать с сокетами
хочу научиться посылать и принимать сокеты, посредством с++,кто нибудь может научить? Все, что читал в сети не помогло

3
Программист по неволе
 Аватар для Alex_From_777
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
27.04.2015, 10:18  [ТС]
Я сам понял. Нужно реализовывать цикл с задержкой, что бы сервер, успел отвечать.

Добавлено через 2 минуты
"Как реализовывать цикл с задержкой?"- может спросить кто-то. А я отвечу:
-Я это сделал при помощи таймера. Не знаю, правильно или нет. Точнее сказать, корректно или не корректно, но я сделал так. Вот так!!!
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,151
Записей в блоге: 3
27.04.2015, 10:58
Скорее всего тут цикл не причем, и задержку ставить не надо. Приведите пример обработка кода получения и отправки данных сервера.

PS. Отправляя данные от клиента в цикле без дополнительной обработке, скорее всего наткнетесь на "слипания" пакетов.
0
Программист по неволе
 Аватар для Alex_From_777
24 / 24 / 8
Регистрация: 22.04.2015
Сообщений: 476
Записей в блоге: 1
28.04.2015, 11:59  [ТС]
Я сначала вот так написал
C++
1
2
3
4
5
6
7
for (j=0; j<100; j++)
  {
     ClientSocket2->Socket->SendText("[I]Message1[/I]");
     ClientSocket2->Socket->SendText("[I]Message2[/I]");
     ...
     ClientSocket2->Socket->SendText("[I]MessageN[/I]");
  }
Это по нажатию кнопки.
А потом вот это:
C++
1
2
3
4
5
6
void __fastcall TForm1::ClientSocket2Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo1->Lines->Add(Socket->ReceiveText());
  Memo1->Lines->Add("-----------------------------------------------");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2015, 11:59
Помогаю со студенческими работами здесь

Как работать с элементами вектора в цикле
Здравствуйте объясните пожалуйста. как работать с элементами вектора в цикле. в стандартном массиве все было просто.Например...

Как работать с типом string в цикле на С++
Доброго времени суток, и с Наступающим всех! Вопрос в том, как реализовать 21-ую строку, чтобы при вводе &quot;Да&quot; я мог...

Как должен выглядеть класс, который будет работать в заданном цикле?
Как должен выглядеть класс, который будет работать в этом цикле? for (const auto &amp; entry : fs::directory_iterator(path)) { ...

Как сделать ссылку на объект в цикле, чтобы она смогла работать за его пределами
Добрый день! Вопрос в чем - внизу кода я пытаюсь сослаться на объект (FirstAuto.nameAuto), а он пишет, что не присвоено значение. Как...

Функция отказывается работать в цикле
Здравствуйте, программеры 8-) Есть цикл, в котором 6 строк, и в каждом должна работать функция. Но цикл не выполняется и программа...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru