Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Indy Servers/Clients 
:(
    Опции темы
Newline5000
Дата 4.12.2012, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.12.2012

Репутация: нет
Всего: нет



Cобственно постановка задачи:

Нужно чтобы с некоторого количества рабочих мест можно было обмениваться текстовыми сообщениями с одним сервером. В мемо/edit пишем, жмем send - отправляем. Сервер получает сообщение, что-то там с ним делает и шлет обратно. После чего обрывает соединение 

Вопрос:

В Embarcadero С++ Builder XE нет компонента Server Socket и его же клиента. Его заменили Indy компонентами. Подскажите как реализуется такая схема работы? Можно ли где-то найти исходники/примеры?


PM MAIL   Вверх
Newline5000
Дата 4.12.2012, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.12.2012

Репутация: нет
Всего: нет



Победил. Сделал так:
Сервер:
Код

void __fastcall TForm1::IdTCPServer1Connect(TIdContext *AContext)
{
  Form1->Memo1->Lines->Add("К нам подключились");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
{
  Form1->Memo1->Lines->Add("К нам подключились");
  String ReceivedLine;
  ReceivedLine=AContext->Connection->Socket->ReadLn();
  Form1->Memo1->Lines->Add(ReceivedLine);
  AContext->Connection->Socket->WriteLn("Сервером получена строка "+ReceivedLine);
  AContext->Connection->Disconnect();
  Form1->Memo1->Lines->Add("Отключение");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdTCPServer1Disconnect(TIdContext *AContext)
{
  Form1->Memo1->Lines->Add("От нас отключились");


Клиент:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Form1->IdTCPClient1->Host=Form1->Edit1->Text;
  Form1->IdTCPClient1->Connect();
  Form1->IdTCPClient1->Socket->WriteLn(Form1->Edit2->Text);
  Form1->Edit2->Text="";
  Form1->Memo1->Lines->Add(Form1->IdTCPClient1->Socket->ReadLn());
  Form1->IdTCPClient1->Disconnect();
}


Вопрос:
Какого хрена кириллические символы отображаются в виде знаков вопроса?
PM MAIL   Вверх
feodorv
Дата 6.12.2012, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 1
Всего: 45



Цитата(Newline5000 @  4.12.2012,  14:36 Найти цитируемый пост)
Какого хрена кириллические символы отображаются в виде знаков вопроса? 

Может, локаль прописать?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
artsb
Дата 6.12.2012, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Потому что, нужно использовать юникодные строки?
Код

Form1->Memo1->Lines->Add(L"К нам подключились");



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Salatovec
Дата 17.12.2012, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



Цитата(Newline5000 @  4.12.2012,  13:36 Найти цитируемый пост)
Победил. Сделал так:


Дружище, а расскажи пожалуйста, что нужно писать в Edit1->Text у клиента. Там имя хоста, но как узнать какое имя прописать?

PM MAIL   Вверх
artsb
Дата 17.12.2012, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(Salatovec @  17.12.2012,  16:19 Найти цитируемый пост)
Дружище, а расскажи пожалуйста, что нужно писать в Edit1->Text у клиента. Там имя хоста, но как узнать какое имя прописать?

IP-адрес сервера пропишите.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Salatovec
Дата 18.12.2012, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



Цитата(artsb @  17.12.2012,  21:13 Найти цитируемый пост)
IP-адрес сервера пропишите. 


В виде: 255.255.255.255 ?

PM MAIL   Вверх
artsb
Дата 18.12.2012, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(Salatovec @  18.12.2012,  14:52 Найти цитируемый пост)
В виде: 255.255.255.255 ?

Ага. Тот который у вашего сервера.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Salatovec
Дата 19.12.2012, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



Цитата(artsb @  18.12.2012,  17:49 Найти цитируемый пост)
Ага. Тот который у вашего сервера. 


Так, отлично, спасибо - заработало. Но осталась проблема, как у автора темы - отсылаемое сообщение приходит на сервере не в виде ПРИВЕТ, а в виде ??????.

PM MAIL   Вверх
artsb
Дата 19.12.2012, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(Salatovec @  19.12.2012,  09:29 Найти цитируемый пост)
Так, отлично, спасибо - заработало. Но осталась проблема, как у автора темы - отсылаемое сообщение приходит на сервере не в виде ПРИВЕТ, а в виде ??????.

Очевидно, проблемы с кодировкой. Либо приводите клиента и сервера к общему "знаменателю" (используйте одну и туже кодировку). Либо при отправке указывайте, в какой кодировке идут данные, а на сервере проверяйте кодировку и делайте соответствующие преобразования.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Salatovec
Дата 19.12.2012, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



artsb, а Вы можете подсказать, что за загадочный TEncoding кроется в 

Код

    Form1->IdTCPClient1->Socket->WriteLn(Form1->Edit2->Text);


Я передаю туда UnicodeString, но чую, что это не верно.

Это сообщение отредактировал(а) Salatovec - 19.12.2012, 14:12
PM MAIL   Вверх
artsb
Дата 19.12.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



С Indy работал мало, так что, тяжело что-то подсказать. Нужно самому разбираться.
Могу посоветовать такой вариант:
- определитесь с кодировкой, которой будете пользоваться
- отправляйте в сокет сначала длину данных (в вашем случае строки) в байтах
- затем, следом отправляйте сами данные в виде массива байт
- на принимающей стороне получаете размер данных в байтах
- выделяете место для буфера с требуемым размером
- читаете пришедшие данные

Это сообщение отредактировал(а) artsb - 19.12.2012, 15:50


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.