С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286

Локальный чат

06.06.2011, 03:17. Показов 2027. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу локальный чат. столкнулся с проблемами:
при коннекте к серверу клиент передаёт данные о себе(IP, Nick), которые у сервера заносятся в StringGrid.
Затем сервер передаёт всю таблицу всем клиентам
таблица передаётся корректно. читается у клиента разбором на части и внесением в каждую ячейку правильно (проверялось не только мной, но и преподом пошагово). просто того варианта не осталось пока. суть в том, что у клиентов она вносится в свой StringGrid полностью неправильно.
посоветуйте плиз как передать её нормально. я так понимаю будет удобнее пользоваться потоком. но по этому вопросу нарыл не очень много. буду превелико благодарен за предоставленный пример передачи приёма потоком.



при передаче цвета шрифта тоже появились проблемы.
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::Button2Click(TObject *Sender)
{
int red=GetRValue(ColorBox1->Selected);
int green=GetGValue(ColorBox1->Selected);
int blue=GetBValue(ColorBox1->Selected);
if(SS1->Active == true)
{
        for (int i=0; i<client; i++)
        {
                SS1->Socket->Connections[i]->SendText("!"+IntToStr(red)+"!"+IntToStr(green)+"!"+IntToStr(blue)+"!"+Nick+"!"+Powersock1->LocalIP+"!"+LabeledEdit1->Text+"!");
                RE1->SelStart = RE1->GetTextLen();
                RE1->SelAttributes->Color=ColorBox1->Selected;
                RE1->Lines->Add(Time().TimeString()+" "+Nick+" ("+Powersock1->LocalIP+"): "+LabeledEdit1->Text);
        }
}
if(CS1->Active == true)
{
        CS1->Socket->SendText("!"+IntToStr(red)+"!"+IntToStr(green)+"!"+IntToStr(blue)+"!"+Nick+"!"+Powersock1->LocalIP+"!"+LabeledEdit1->Text+"!");
}
LabeledEdit1->Text="";
LabeledEdit1->SetFocus();
}
передача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
        AnsiString tmp1,tmp2,tmp3;
        full=SS1->Socket->ReceiveText();
        int index=0,red,green,blue;
        if(full[1]=='!')
        {
                for (int i=0; i<client; i++)
                {
                        SS1->Socket->Connections[i]->SendText(full);
                }
                full.Delete(1,1);
                index=full.AnsiPos('!');
                red=StrToInt(full.SubString(1,index-1));
                full.Delete(1,index);
                index=full.AnsiPos('!');
                green=StrToInt(full.SubString(1,index-1));
                full.Delete(1,index);
                index=full.AnsiPos('!');
                blue=StrToInt(full.SubString(1,index-1));
                RE1->SelStart = RE1->GetTextLen();
                RE1->SelAttributes->Color=(TColor)RGB(red,green,blue);
                index=full.AnsiPos('!');
                tmp1=full.SubString(1,index-1);
                full.Delete(1,index);
                index=full.AnsiPos('!');
                tmp2=full.SubString(1,index-1);
                full.Delete(1,index);
                index=full.AnsiPos('!');
                tmp3=full.SubString(1,index-1);
                full.Delete(1,index);
                RE1->Lines->Add(Time().TimeString()+" "+tmp1+" ("+tmp2+"): "+tmp3);
        }
}
обработка сервером




C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
        full=CS1->Socket->ReceiveText();
        AnsiString tmp1,tmp2,tmp3;
        int index=0,red,green,blue;
        if(full.Length()!=0){
        if(full[1]=='!')
        {
                full.Delete(1,1);
                index=full.AnsiPos('!');
                red=StrToInt(full.SubString(1,index-1));
                full.Delete(1,index);
                index=full.AnsiPos('!');
                green=StrToInt(full.SubString(1,index-1));
                full.Delete(1,index);
                index=full.AnsiPos('!');
                blue=StrToInt(full.SubString(1,index-1));
                RE1->SelAttributes->Color=(TColor)RGB(red,green,blue);
                full.Delete(1,index);
                index=full.AnsiPos('!');
                tmp1=full.SubString(1,index-1);
                full.Delete(1,index);
                index=full.AnsiPos('!');
                tmp2=full.SubString(1,index-1);
                full.Delete(1,index);
                index=full.AnsiPos('!');
                tmp3=full.SubString(1,index-1);
                full.Delete(1,index);
                RE1->Lines->Add(Time().TimeString()+" "+tmp1+" ("+tmp2+"): "+tmp3);
 
        }}
}
обработка клиентом
код коряв, прошу к этому моменту не придераться
что посоветуете???

Добавлено через 1 час 11 минут
ха... со шрифтами вроде разобрался... а вот как передать StringGrid??? может кто объяснит работу с потоками?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2011, 03:17
Ответы с готовыми решениями:

Локальный чат
Подскажи какие есть(вы используете) локальные чаты с сервером? Добавлено через 9 минут до 50 пользователей

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

Простой локальный чат на c#
Нужен простой многоклиентский сетевой чат, без всяких наворотов. Подкиньте плз пример.

1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
06.06.2011, 04:16
про потоки на cyberforum.ru
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2011, 04:16
Помогаю со студенческими работами здесь

Не работает локальный чат
и так столкнулся с такой вот проблемой.Хотел сделать чат что бы и сервер мог писать сообщения клиенту и клиент серверу.Выделил ту часть...

Преобразуем локальный чат в интернет форум
Есть чат в локальной сети. Возможно ли транслировать его, естественно автоматически, на домен второго уровня уже в виде форума, т.е. на...

Приложение для передачи файлов + локальный чат
Есть приложение для отправки и получения файлов по локальной сети. На сокетах. Нашёл готовое и думал перебрать под себя. Полностью...

Локальный чат на VB: нужны исходники или идеи реализации
Ищу хороший пример, нужен сервер и желательно оконный , с возможностью отправлять сообщения подключенным клиентам ( список подключенных),...

Локальный чат путем обмена сообщений с помощью текстовых файлов
Доброго времени суток. Решил написать простенький чат для локальной сети. Идея в том, что программка будет храниться на сетевом диске,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 - 2026, CyberForum.ru