|
|
|
|
Помогите с Socket !!!!
»»»
Pavel - pavel@tts.tomsk.su (23.10.00 05:11) Как передать файл с машины на
машину через Socket соединение? Как всегда нужны примеры ;-)
»»»
oksana - oksana@wtgres.pssr.ru (23.10.00 07:24) Для данной цели можно
воспользоваться компонентами TNMStrmServ и TNMStrm, которые предназначены
для обмена потоками данных.
Обработчик для клиента:
var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; MyStream.LoadFromFile('c:\windows\рабочий стол\demo.txt'); NMStrm1.PostIt(MyStream); MyStream.Free; end;
Обработчик
для сервера:
procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream); var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; MyStream.CopyFrom(strm,NMStrmServ1.BytesTotal); MyStream.SaveToFile('c:\windows\рабочий стол\demo2.txt'); end;
С
уважением, Оксана
»»» shi - shi@tts.tomsk.su (23.10.00
11:44) Простите за глупый вопрос, но где взять TNMStrmServ и
TNMStrm.
»»» oksana - oksana@wtgres.pssr.ru (23.10.00 12:51) В
пятой дельфе (Enterprise) есть данные компоненты. Они находятся на вкладке
FastNet С уважением, Оксана
»»» pavel - pavel@tts.tomsk.su
(23.10.00 13:58) А если использовать TpowerSock то тогда как передать
файл?
»»» oksana - oksana@wtgres.pssr.ru (23.10.00 14:55) На
сколько мне не изменяет память, там возникают праблы с размерами файлов.
Хотя попробывать стоит. Ведь там так же существуют методы для работы с
потоками (чтение, запись). С уважением, Оксана
»»» Pavel -
pavel@tts.tomsk.su (24.10.00 19:23) А как организовать двусторонний обмен
файлами ведь если я правильно понял то при помощи TNMStrmServ и TNMStrm
поток инициируется со только стороны клиента. Одним словом передомной
следующая задача: Программа клиент должна связаться с сервером передать ей
файл потом запросить и принять определенный файл.
»»» oksana -
oksana@wtgres.pssr.ru (25.10.00 05:28) Тогда можно писать по аналогии с
Chat, пример которого присутствует в Demos. Таким образом, приложение у
тебя выступает и в роли сервера и в роли клиента (два в одном), в
зависимости от действий.
С уважением, Оксана
»»» pavel -
pavel@tts.tomsk.su (25.10.00 05:47) А каким компанентом лучше
воспользоваться?
»»» oksana - oksana@wtgres.pssr.ru (25.10.00
05:58) Для этих целей я использовала, выше названные, TNMStrmServ
TNMStrm. С уважением, Оксана
»»» pavel - pavel@tts.tomsk.su
(25.10.00 07:09) TNMStrmServ и TNMStrm как я понял не позволяют делать
двусторонний обмен или я не прав, и как от клиента к серверу передать запрос
типа "sendfile C:\text.txt"
»»» oksana - oksana@wtgres.pssr.ru
(25.10.00 07:42) Вы правы. Клиент (TNMStm)- предназначен для отправления
данных серверу (в данном случае потоков). А сервер для получения. Но
ничего не может помешать в приложении вывесить эти два компонента, каждый из
которых будет выполнять свои функции, при этом следует изменять свойство
Host, каждого из них. Для правильного функционирования.
С уважением,
Оксана
»»» pavel - pavel@tts.tomsk.su (25.10.00 08:05) Нехотелось
бы на клиентской части размещать TNMStrmServ в целя безопасности. Может еще
какой вариант посоветуете.
»»» oksana - oksana@wtgres.pssr.ru
(25.10.00 08:38) А какие проблемы с безопасностью??? Обработчиков
навесить и все в порядке. Активизировать компоненты при
необходимости. Тогда можно попробывать использовать TPowerSock. В нем в
неопубликованном виде, присутствуют события TNMStrm а также следующие
методы procedure CaptureStream(MainStream: TStream; Size: longint); чтение
из сокета данных и помещение их в поток; procedure CaptureFile(FileName:
String); //// помещение в файл; procedure SendFile(FileName:
String); procedure SendStream(MainStream: TStream); В хелпе есть
примеры по их использованию
С уважением, Оксана
»»» pavel -
pavel@tts.tomsk.su (25.10.00 09:57) Всеже компанент TPowerSock больше
подходит. Но тут возникает вопрос "Какое событие происходит на сервере при
получении от клиента к примеру строки,а не потока"
»»» oksana -
oksana@wtgres.pssr.ru (25.10.00 10:36) Данные передаются пакетами
(порциями), поэтому не столь выжно, что это поток или строка. В момент
приема очередной порции данных возникает событие: property OnPacketRecvd:
TNotifyEvent;
С уважением, Оксана »»» Mike Goblin -
mgoblin@mail.ru (25.10.00 10:42) А может быть проще FTP сервер поставить
и не заниматься изобретением велосипеда, С уважением, Mike
Goblin
»»» pavel - pavel@tts.tomsk.su (25.10.00 12:27) А где взять
компанент для FTP сервера?
»»» Mike Goblin - mgoblin@mail.ru
(25.10.00 13:08) В Win NT а еще лучче в Linux есть уже готовые сервера
FTP Настаиваешь права доступа пользователей и с помощью Internet
Explorer или Netscape или еще какого браузера имеешь пересылку файлов
туда-сюда без всякого геморроя и в пределах локалки, а если есть статический
IP в Inete - хоть по всему шару. Если уж совсем невмоготу и хочется что-то
сваять на Делфи на закладке FastNet берешь NMFTP и лепишь клиента, там все
до безобразия просто.
»»» Shi - Shi@tts.tomsk.su (28.10.00
10:52) Как правильно описать событие OnPacketRecvd у компанента
TPowerSock ведь его нет в разделе Events?
»»» oksana -
oksana@wtgres.pssr.ru (30.10.00 12:02) Для формы :procedure
Powersock1PacketRecvd(Sender: TObject); Далее:
procedure TForm1.Powersock1PacketRecvd; begin
end;
С
уважением, Оксана
-= Из конференции сайта MASTERS OF DELPHI
(http://delphi.mastak.com) =-
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|
|