Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Indy 
:(
    Опции темы
Kirgston
Дата 23.9.2008, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем доброго времени суток! Помогите чуток с прогой  как мне написать код чтоб клиент присоеденялся и считывал то что написано в РичЕдите и записывал в свой РичЕдит.
Вот вроде сервер написал...
Код:


Код

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var s:string;
i:integer;
begin
for i := 0 to RE.Lines.Count - 1 do

s:=RE.Lines[i];
Write(s);
end;


А как клиент сделать?
Спасибо!
PM MAIL   Вверх
SneG0K
Дата 25.9.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(Kirgston @  23.9.2008,  19:59 Найти цитируемый пост)
А как клиент сделать?

Руками! Чтоб он читал из того ричедита и передавал в сеть!
PM WWW Skype   Вверх
Kirgston
Дата 25.9.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Угу все такие умные на словах. А на деле? 
Знал бы не спрашивал!
PM MAIL   Вверх
Matematik
Дата 26.9.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Судя по AContext: TIdContext, у тебя Indy10.
Под рукой его нет, в Indy9 делается так
Сервер:
Код

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  mem : TMemoryStream;
  BufSize : Integer;
begin
  mem := TMemoryStream.Create;
  try
    RichEdit1.Lines.SaveToStream(mem);
    mem.Position := 0;
    BufSize := mem.Size;
    AThread.Connection.WriteInteger(BufSize);
    AThread.Connection.WriteStream(mem);
  finally
    mem.Free;
  end;
  AThread.Connection.Disconnect;
end;

Клиент:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  mem : TMemoryStream;
  BufSize : Integer;
begin
  IdTCPClient1.Host := '169.254.1.2';
  IdTCPClient1.Port := 12345;
  IdTCPClient1.Connect;
  mem := TMemoryStream.Create;
  try
    BufSize := IdTCPClient1.ReadInteger;
    IdTCPClient1.ReadStream(mem, BufSize);
    mem.Position := 0;
    RichEdit1.Lines.LoadFromStream(mem);
  finally
    mem.Free;
  end;
  IdTCPClient1.Disconnect;
end;


PM MAIL WWW ICQ   Вверх
Kirgston
Дата 26.9.2008, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



о! Огромное спасибо! Вопросик по Инди 10. Ну у меня всегда стоит последний делфи )))) , но например если я откомпилирую на Делфи 2009 то работать не будет? Почему в Инди 10 я нормально немогу сделать чужой ИП? Только свои (локалка, ван ип, лан ип) . У меня ещо проблемка ))))) я перекомпилировал проект Делфи 2007 в Делфи 2009. Но как я понимаю Инди 9 в Делфи 2007. Можно как то вернуть из Делфи 2009 в Делфи 2007? smile И что такое Мемори Стрим? И почему вы зделали через потоки? БОЛЬШОЕ СПАСИБО!!! 
PM MAIL   Вверх
Matematik
Дата 26.9.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Между 9 и 10 не так много внешних различий (внутри очень! разные). Вместо AContext стало AThread
Возможно, просто замети AThread.Connection.Write на AContext.Connection.Write, бедет работать.

> И что такое Мемори Стрим?
Memory - память
Stream - поток
Грубо - представляет память как поток байтов, так же как FileStream - файловый поток

Код
Код

RichEdit1.Lines.SaveToStream(mem);

Сохраняет содержимое ричьедит в память, откуда удобно отослать клиенту

> И почему вы зделали через потоки?
Какие потоки? 
В рус. яз. запутано 
Stream - поток 
Thread - поток
А суть разная.
Использую Stream потому что удобно, меньше кода писать самому.
AThread - это тоже самое что AContext, название и класс разные, а функции одинаковые.
У TIdTCPServer каждое соединение с клиентом выполняется в отдельном потоке(thread) - это код в ф-ции IdTCPServer1Execute().
Так вот переменная AThread (AContext) эт информация о потоке (thread) где код выполняется + инф о соединение с клиеном.





Это сообщение отредактировал(а) Matematik - 26.9.2008, 09:41
PM MAIL WWW ICQ   Вверх
Kirgston
Дата 26.9.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ясненько понял

Код

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  mem : TMemoryStream;
  BufSize : Integer;
begin
  mem := TMemoryStream.Create;
  try
    RE.Lines.SaveToStream(mem);
    mem.Position := 0;
    BufSize := mem.Size;
    AContext.Connection.[color=red]WriteInteger[/color](BufSize);
    AContext.Connection.[color=red]WriteStream[/color](mem);
  finally
    mem.Free;
  end;
  AContext.Connection.Disconnect;
end;


Но Аконтекст както подругому работает с данными. У него нету записи и чтения :(
PM MAIL   Вверх
Matematik
Дата 26.9.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Мдя, недодалана 10 версия.
Не хватает удобных методов.
Вот из-за таких вещей предпочитаю 9ку.
PM MAIL WWW ICQ   Вверх
Kirgston
Дата 26.9.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Но 9ка для Делфи 7 максимум. На Делфи 2007 непойдет :( 
Ладно щас както постараюсь сделать :Р
А если мне использовать 10 и 9. Приложение будет работать?
10 для клиента, 9 для сервера.

Добавлено через 2 минуты и 15 секунд
Нет низя нормально работать так :( 10 вобще так не работает. Можна както установить на делфи 2007 или делфи 2009 инди 9?
PM MAIL   Вверх
Matematik
Дата 26.9.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



> Но 9ка для Делфи 7 максимум. На Делфи 2007 непойдет :( 
Странно, как раз в 2007 работает 9ка

> А если мне использовать 10 и 9. Приложение будет работать?
> 10 для клиента, 9 для сервера.
Если правильно писать, то без разницы на чем написан сервер\клиент, хоть на чистом WinSock API

Это сообщение отредактировал(а) Matematik - 26.9.2008, 14:22
PM MAIL WWW ICQ   Вверх
Kirgston
Дата 26.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может у меня 9ка не работает изза того что я поставил Делфи 2007 + Делфи 2009?
PM MAIL   Вверх
Kirgston
Дата 19.10.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята. Ктото уже работал с Инди 10? Как мне например с сервера передать Поток данных?
PM MAIL   Вверх
MetalFan
Дата 19.10.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



нормально работает 10ка и все в ней хватает. просто некоторые методы и св-ва переместились в другие места


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Kirgston
Дата 19.10.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MetalFan, 
Пожалуйста!!! Ну уж очень прошу помоги. Я уже всё перелазил, всё обыскал... ну не могу.... если клиент читает Поток, то сервер не может отослать, если сервер отсылает строку то клиент не может прочитать... 
Пожалуйста. Ну просто умоляю перепиши метод Математика в Инди 10. Я уже через сокеты пытался... читал ДРКБ... но там надо компонент СокетСервер, но прочёл что изза того что он слабый его удалили. И надо через Инди... пожалуйста скажи хоть намёк как сделать... я уже скоро сума сойду :(

 smile 
PM MAIL   Вверх
MetalFan
Дата 19.10.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



выложи пример неработающего приложения. самому влом эксперементировать.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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