WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  Delphi
  Передача файла с клиента на сервер через сокет

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Передача файла с клиента на сервер через сокет
rinat2000 опубликован 30-01-2002 15:15 MSK   Click Here to See the Profile for rinat2000   Click Here to Email rinat2000  
У меня только 1 вопросик когда передаем через сокет динамический массив то после конца работы с ним(тк это идет в пределах процедуры) указатель уничтожается причем с обоих сторон(чего не происходит с статическим массивом), у меня изза этого были большие глюки. Можно ли как-то безопасно в этом случае передать динамический массив?
rinat2000 опубликован 30-01-2002 15:25 MSK     Click Here to See the Profile for rinat2000  Click Here to Email rinat2000     
Тут есть исходники по этому поводу в разделе "Программирование серверов на основе сокетов в Дельфи" но что-то не так
вот кусок с сервера:
FileStream:=TFileStream.Create(Clients.FileName[Socket],fmCreate);
if FileStream<>nil then ListBox1.Items.Add('FileOpened');
GetMem(PСharTemp,Socket.ReceiveLength+1);
// ListBox1.items.add('Setted buf');
Socket.ReceiveBuf(PСharTemp,Socket.ReceiveLength);
// ListBox1.items.add('recived stream');
FileStream.Write(PСharTemp,Socket.ReceiveLength);
// ListBox1.items.add('Stream writed');
Socket.SendText('ok');
// ListBox1.items.add('End sended');
FileStream.Free;
FreeMem(Ptemp);
А вот с клиента:
Stream:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
ClientSocket1.Socket.SendStream(Stream);
repeat until ClientSocket1.Socket.ReceiveLength<>0;
s:=ClientSocket1.Socket.ReceiveText;
Stream.Free;
Так вот клиент падает после строчки
// ListBox1.items.add('Setted buf');
и соединение падает соответственно ну на сервере соотв сообщение об ошибке.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.