Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2008, 09:32   #1
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
По умолчанию Client Server Socket передача информации с помощью потока

У меня вопрос есть интересный.
Пишу в данный момент программу которая состоит из двух частей Сервера и клиента.
Клиент с копмонентом ServerSocket получает список программ запущеных на компьютере и по Запросу от сервера с компонентом ClientSocket - Сохраняет полученный список программ в файл и передает этот файл по сети: так вот мне нужно отправить этот список не сохраняя его в текстовый файл, нужно просто сохранить его в поток: ListBox1.Items.SaveToStream(fs); а дальше то как его отправить подскажите пожалуйста?
Заранее примного благодарен!
One.Love вне форума Ответить с цитированием
Старый 15.01.2008, 12:40   #2
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

Примеров передачи фалов через ServeSocket ClientSocket с исходниками полно, в бей в любом поисковике. Копировать код сюда не имеет смысла!!!
А так если конкретно то:
Код:
Socket.SendStream(fs);

Последний раз редактировалось Snoopy; 15.01.2008 в 18:32.
Snoopy вне форума Ответить с цитированием
Старый 15.01.2008, 18:56   #3
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
По умолчанию

Сейчас попробовал сделать так:
Цитата:
procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var
fs: TFileStream;
Data: TMemoryStream;
begin
if Socket.ReceiveText = 's' then
begin
ListBox1.Items.SaveToStream(Data);
Data.LoadFromStream(fs);
try
fs.Position:= 0;
Socket.SendText('Size:'+IntToStr(fs .Size) + #0) ;
Socket.SendStream(fs);
Timer2.Enabled:=True;
finally
end;
end;
end;
но он выдает ошибку:
Цитата:
Access violation at address 0041599F in module 'Project.exe'. Read of address 00000000
Раньше был код:
Цитата:
procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var
fs: TFileStream;
Data: TMemoryStream;
begin
if Socket.ReceiveText = 's' then
begin
ListBox1.Items.SaveToFile('C:/text.txt');
fs:=TFileStream.Create('C:/test.txt', fmOpenRead);
try
fs.Position:= 0;
Socket.SendText('Size:'+IntToStr(fs .Size) + #0) ;
Socket.SendStream(fs);
Timer2.Enabled:=True;
finally
end;
end;
end;
Но мне нужно чтобы инфа отправлялась сразу из листбокса, без сохранения нового файла
One.Love вне форума Ответить с цитированием
Старый 15.01.2008, 19:03   #4
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
По умолчанию

мне нужно загрузить данные из листбокса в поток т.е. в MemoryStream потом преобразовать из MemoryStream в FileStream и передать
Socket.SendStream(fs);
One.Love вне форума Ответить с цитированием
Старый 15.01.2008, 19:06   #5
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

А поток не создал
data:= TMemoryStream.Create
Замени
Код:
Socket.SendText('Size:'+IntToStr(fs.Size) + #0) ;
Socket.SendStream(fs);
На
Код:
Socket.Connections[0].SendText(IntToStr(data.Size) + #0);
Socket.Connections[0].SendStream(data);
или добавь Connections[i]

А чем тебя просто MemoryStream не устраивает???

Последний раз редактировалось Snoopy; 15.01.2008 в 19:20.
Snoopy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Client-Server на 500+ пользователей. Mixasik Работа с сетью в Delphi 8 22.08.2008 12:01
Client и Server Роман Радер Работа с сетью в Delphi 11 10.07.2008 15:24
Client - Server Socket событие OnError One.Love Работа с сетью в Delphi 10 04.03.2008 09:39
Как выключить удалённый компьютер c помощью Server Socket. muravey Работа с сетью в Delphi 3 09.11.2007 08:09
Работа Client i Server socket на уровнях модели OSI ilyano Работа с сетью в Delphi 3 31.10.2007 08:40