Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101

Объекты TTcpClient и TTcpServer - как отправить несколько сообщений через них?

29.11.2010, 22:22. Показов 2990. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуёвина такая: пытаюсь написать простенький... односторонний чат, назовём его так, т.е. клиент отправляет сообщение, а сервер получает его и выводит в memo.
Странность заключается в том, что отправляется только одно сообщение, последующие игнорируются. Кем - неизвестно.

Делаю так:

У клиента включаю TcpCLient, жду ввода. По нажатию кнопки "отправить" происходит
C++
1
2
3
mess = "[ " + Edit2->Text + " ] " + Edit1->Text;
TcpClient1->Sendln(mess);
Memo1->Lines->Add(mess); //без проверки прошло ли оно на сервер
Где Edit2 - ник, а Edit1 сообщение.

На сервере в это время в memo появляется сообщение, на событие OnAccept

C++
1
Memo1->Lines->Add(ClientSocket->Receiveln());
При такой схеме обращения к серверу, проходит только первое сообщение. Второе уже не проходит, а на третье и следующие срабатывает событие OnError TcpClient-а.

Попробовал пр каждом нажатии на "отправить" подключаться, слать сообщение, отключаться, но это уж больно криво и бессмысленно.


Прошу помощи. Никак не могу понять почему проходит только одно сообщение, и что за ошибка на клиенте.

Добавлено через 13 минут
Кто-то посоветовал на OnAccept сервера сделать:

C++
1
2
3
4
5
6
7
do
{
Memo1->Lines->Add(ClientSocket->Receiveln());
}
while(ClientSocket->Receiveln() != "");
 
return;
но в этом случае отправляется только каждое второе сообщение
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2010, 22:22
Ответы с готовыми решениями:

Компоненты палитры Internet (TTcpClient и TTcpServer)
Ситуация такая, разговоров много о чатах (клиент сервер), хотелось бы написать чат именно с компонентами из палитры Internet (TTcpClient и...

Передача сообщения по нету, при подключении через TTcpClient и TTcpServer
как передать сообщение по нету, при подключении с помощью TTcpClient и TTcpServer?

TTcpServer, TTcpClient...
Сори за ламерство, но вот: (Желательно дать код или пример :) ) 1. послать байт от клиента серверу 2. прочитать его сервером

9
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331
30.11.2010, 00:07
Цитата Сообщение от Oskaria Посмотреть сообщение
итуёвина такая: пытаюсь написать простенький... односторонний чат
Проблемы я не вижу... Всю информацию, которая будет необходимо готов предоставить.


Цитата Сообщение от Oskaria Посмотреть сообщение
У клиента включаю TcpCLient, жду ввода.
Тоесть вы используете у клиента компонент линейки Internet?



Цитата Сообщение от Oskaria Посмотреть сообщение
На сервере в это время в memo появляется сообщение, на событие OnAccept
Только вот Сервера я не вижу, ниже вы приводите текст программы клиента ClientSocket, сервер это ServerSocket

Не могу понять зачем вы используете два разных компонента, использовали бы их в связке ServerSocket и ClientSocket || TCPServer и TCPClient.
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
30.11.2010, 18:45  [ТС]
Мне не к чему оба компонента в одной программе, мне необходимо что бы одна отправляла текст в другую. Всегда, когда это нужно, но как я уже писал текст либо шлётся один раз, либо шлётся через раз... Я вот с этим никак не могу понять, что происходит.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
01.12.2010, 09:44
Тебе надо любым способом отправлять сообщения с одного клиента на сервер?
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
01.12.2010, 15:36  [ТС]
И да, и нет. Любой способ, кроме INDY, и ServerSocket/ClientSocket. Инди я просто не знаю, а эти сокетные компоненты по какой-то причине не устанавливаются в билдер.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
02.12.2010, 10:04
Всмысле не устанавливаются? Они разве не стандартные в билдере?
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
02.12.2010, 19:58  [ТС]
Неть, они перестали быть предустановленными с тех пор, как борладн стал рад студио. Что бы они появились - надо их установить, пак с ними есть в комплекте, но при попытке их установки, студия ругается, мол не могу установить сейчас. А почему не хочет, и самое главное когда сможет - не говорит.
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
15.12.2010, 00:51  [ТС]
Цитата Сообщение от GaFBich Посмотреть сообщение
Не могу понять зачем вы используете два разных компонента, использовали бы их в связке ServerSocket и ClientSocket || TCPServer и TCPClient.
Я использую TCPClient и TCPServer, подумав, что это будет очевидным не стал писать, мол, "Сервер TCPServer приняв сообщение...".
0
1 / 1 / 0
Регистрация: 22.04.2016
Сообщений: 40
17.04.2017, 11:28
У меня тоже не работает повторная отправка сообщений без:
C++
1
2
Form1->TcpClient1->Close();
Form1->TcpClient1->Open();
Oskaria, Смогли ли решить проблему, не помните?)
0
 Аватар для Oskaria
3 / 3 / 0
Регистрация: 10.07.2009
Сообщений: 101
17.04.2017, 14:30  [ТС]
Ну ты и вопросы задаешь, барин))

Помню, что разобрался и вроде там пришлось, что-то сбрасывать или обновлять... Посмотри серверные методы на предмет refresh/reload...
Но - это вилами по воде, я давно в веб разработке и борланд открывал, последний раз, года 4 назад))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2017, 14:30
Помогаю со студенческими работами здесь

На палитре компонентов нет TTcpClient И TTcpServer, а так же TUdpClient
Собственно вопрос в заголовке темы))

Как отправить через ajax одну из несколько форм с одинаковым id?
здравствуйте хочу отправить через ajax форму: <?php $result = $mysqli->query("SELECT * FROM product ORDER BY id DESC"); ...

Как переслать байт-массив через TTcpClient?
Доброго дня всем :) Возникла небольшая заморочка - пытаюсь переправить бинарный файл посредством TTcpClient: procedure...

Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты?
Вопрос прост: как при выходе из функции сохранить объекты, которые были созданы в данной функции (указатели объектов положены в массив)?

Не получается отправить данные через несколько дней
Есть код if ($ row ! = 'immediate') { } else { mail ($ to, $ subject, $ message, $ headers); } если $ row == 'immediate'...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru