![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уважаемые Мастера! Пожалуйста помогите чайнику пожалуйста разобраться с соккетами. [D6, Win95/98, WinXP]
daos © (2002-03-22 06:36:00)Моей прграмме нужно записать данные в фаил, а потом преслать на другую машину, но надо так-же в начало этого пакета дописать информацию о размешении файла -каталоги-подкаталиги. В программе пользователь задает каталог1 в нем каталог2, в нем каталог3, и имя_файла, затем создаются эти каталоги и фаил, в него пишется инфа, и по завершению программы этот фаил должен быть передан на другую машину.
Для этого я использую компоненты с палитры Internet (Клиент и Сервер Сокет), создаю файловый поток, и отсылаю его, на сервере считываю в файловый поток.
Вопрос в том как в начало дабавить строчку указывающию путь к файлу(его я знаю):string, а на сервере считать сначала ее, создать по ней директорию1-диркторию2-директорию3-Имя_файла, и записать этот оставшуюся информацию из сокета в файл(имя_файла).
Файл текстовый.
Song (2002-03-22 17:41:00) [1]Так и есть для каждого клиента отдельный сокет. А что, что не так должно быть?
Например:
для клиента TClientSocket
SendText(S); // Посылаем текст
SendStream(ms); // Посылаем поток
FlagReceive:=False;
While not FlagReceive Do Application.ProcessMessages; // Ждём пока та сторона его не примет
...
// Посылаем след. файл
для клиента TServerSocket
...
IF Pos("confirm_",ReceiveText)>0 then FlagReceive:=True;
...
// Посылаем след. файл
для сервера TClientSocket
IF Size=DataSize then // Поток получен полностью
Begin
...
// Посылаем сообщение confirm_
End;
Знаю, что возможно сразу будет непонятно, но адаптировал как мог.
daos (2002-03-22 17:01:00) [2]
> послать поток с файлом и ждать от получателя положительного
> ответа, потом посылать следующий файл и т.д.
Не совсем вас понял.
Стоит вопрос: у меня есть серверное приложение(1шт) и 10 клиентских, на разных компьютерах. Если я посылаю текст+поток с одного компутера и текст+поток с другого одновременно-могут-ли они перепутаться и как этого избежать.
Кстати в королевтве дельфи только что прошол что для каждого клиента сервер выделяет отдельный сокет.
Song (2002-03-22 15:58:00) [3]Перепутаются. Поэтому нужно послать поток с файлом и ждать от получателя положительного ответа, потом посылать следующий файл и т.д.
daos (2002-03-22 14:09:00) [4]
> Polevi © (22.03.02 10:26)
> пишешь в сокет размер строки, сама строку с путем, затем
> сам файл
Но мучает вопрос: не перепутаются ли данные если обратятся несколько клиентов на сервер одновременно, т.е. строка с путем будет одного клиента, а фаил-другово?
Song (2002-03-22 13:00:00) [5]http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=991237103&n=20
daos (2002-03-22 11:22:00) [6]
> Polevi ©
А можно пример, я с сетями второй раз в жизни работаю, а надо очень.
Polevi (2002-03-22 10:26:00) [7]пишешь в сокет размер строки, сама строку с путем, затем сам файл
daos (2002-03-22 07:28:00) [8]При том на одну серверную прогу должна обрасчаться 15-20 клиентов.