Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять сокеты.... [D6]


Страницы:   1 2

Fenix ©   (2002-06-21 16:58:00) 

Всем привет!
На мой предидущий вопрос я так и не получил ответа... Но я чуть-чуть разобрался... У меня потоковый сервер и клиент.
Я посылаю файл серверу. Всё. Вроде послал. Но пока не закроешь программу сервер, файл не сохраняется на диске. Почему? И если сначала закрываешь клиент, то появляется ошибка и ничего не сохраняется. Почему? Может кто-нибудь хоть в этот раз подскажет, что делать...

Всем заранее спасибо!


jedi   (2002-06-26 17:00:00) [1]

indy est" mojno dlea D5 mojno ska4at" s http://www.nevrona.com/indy/.
ya rabotaiu s versiei 9.0.1(vrode ona rabotaet stabil"no ia tam est" vseo 4to mne nujno). Est" i bolie pozdnie, mojete poprobovat".

Primeri prishliu ve4erom ili utrom.


Fenix   (2002-06-26 16:12:00) [2]

Пришли мне тоже плиз!!!
CoolFenix@yandex.ru


jasper   (2002-06-26 12:26:00) [3]

пришли пжалста мне на nightboy2000@mail.ru исходник, а же лательно и на socker клиен-сервер, у меня d5 там есть indy?


jedi   (2002-06-26 00:33:00) [4]

mogu prislat" primer s ispol"zovaniem indy


Malder   (2002-06-26 00:13:00) [5]

Почитай http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988620989&n=20
мож поможет...


jasper   (2002-06-25 21:03:00) [6]

блин ну не дайте зациклиться на этом помогите, разберитесь, а то щас сдохну :)


Malder   (2002-06-25 18:22:00) [7]

Хех. И у меня что-тo стало тоже не работать, ошибка при Socket.ReceiveBuf - отчего вдруг...
влом разбираться сейчас...


Fenix   (2002-06-25 18:07:00) [8]

Да, у меня тоже не работает! Ну ПОМОГИТЕ ЖЕ КТО-НИБУДЬ!!!!!!!!!!!!!!!!


jasper   (2002-06-24 13:40:00) [9]

у меня нет!!! я взял твой код установил как надо, и нифига, у меня почемуто рвется соединение когда хочу скопировать файл...
это должно работать когда у сервера и клиента стоит nonblocking?


jasper   (2002-06-24 13:40:00) [10]

у меня нет!!! я взял твой код установил как надо, и нифига, у меня почемуто рвется соединение когда хочу скопировать файл...


Malder   (2002-06-23 21:21:00) [11]

А у тебя разве нет ?


Fenix   (2002-06-23 18:19:00) [12]

>Malder
И у тебя это всё работает? (посылка и принятие)


Malder   (2002-06-23 18:15:00) [13]

Fenix, если ты пользуешься D6 то там Indy встроено.

Отправка файла:

procedure SendFileBySocket(filename: string);
var srcfile: TFileStream;
begin
{Открываем файл filename}
srcfile := TFileStream.Create(filename,fmOpenRead);
{Посылаем его первому подключенному клиенту}
ServerSocket1.Socket.Connections[0].SendStream(srcfile);
{Закрываем файл}
srcfile.Free;
end;


Имхо, намного удобней.


Fenix   (2002-06-23 16:45:00) [14]

Что за indy и где это достать?


jedi   (2002-06-23 16:35:00) [15]

lu4she ustanovi indy9 i smotri primeri. tam delatsea namnogo proshe i rabotaet lu4she.


Fenix   (2002-06-23 16:30:00) [16]

>Malder
TMyServerThread = class(TServerClientThread)
procedure ClientExecute; override;
end;

А твой способ работает? Покажи процедуру отправки файла!


Malder   (2002-06-23 15:36:00) [17]

А-а-а. Понял.
Скажи тогда. Что за TMyServerThread ?
Какого класса ?


Fenix   (2002-06-23 15:10:00) [18]

>Malder
Источник нашего непонимания друг друга - это то,
что твой метод передачи( наверное правильно выразился:) )
асинхронный, а мой синхронный, так что у меня НЕ МОГУТ
происходить события типа ClientSocket1Read.


Malder   (2002-06-22 22:01:00) [19]

А что такое TMyServerThread ?
Я просто не понимаю, что ты делаешь. Вот ты объявляешь MySocket: TWinSocketStream. Потом пытаешься через него получить данные... А на каком порту будет слушать сокет ? Неужели это работать может ?!

Вот как я понимаю прием файлов:

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var l: Integer;
buf: PChar;
src: TFileStream;
begin
{Записываем в l размер полученного блока}
l := Socket.ReceiveLength;
{Заказываем память для буфера}
GetMem(buf,l+1);
{Записываем в буфер полученный блок}
Socket.ReceiveBuf(buf,l);
{Открываем временный файл для записи}
src := TFileStream.Create("myfile.tmp",fmOpenReadWrite);
{Ставим позицию в конец файла}
src.Seek(0,soFromEnd);
{Записываем буфер в файл}
src.WriteBuffer(buf,l);
{Закрываем файл}
src.Free;
{Освобождаем память}
FreeMem(buf);
end;


Fenix   (2002-06-22 19:05:00) [20]

>jasper
У меня от клиента серверу отправляется, но файл сохраняется,
только если сначала закрыть сервер.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо