Форум: "Сети";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
ВнизУважаемые Мастера! Пожалуйста помогите чайнику пожалуйста разобраться с соккетами. Найти похожие ветки
← →
daos (2002-03-22 06:36) [0]Моей прграмме нужно записать данные в фаил, а потом преслать на другую машину, но надо так-же в начало этого пакета дописать информацию о размешении файла -каталоги-подкаталиги. В программе пользователь задает каталог1 в нем каталог2, в нем каталог3, и имя_файла, затем создаются эти каталоги и фаил, в него пишется инфа, и по завершению программы этот фаил должен быть передан на другую машину.
Для этого я использую компоненты с палитры Internet (Клиент и Сервер Сокет), создаю файловый поток, и отсылаю его, на сервере считываю в файловый поток.
Вопрос в том как в начало дабавить строчку указывающию путь к файлу(его я знаю):string, а на сервере считать сначала ее, создать по ней директорию1-диркторию2-директорию3-Имя_файла, и записать этот оставшуюся информацию из сокета в файл(имя_файла).
Файл текстовый.
← →
daos (2002-03-22 07:28) [1]При том на одну серверную прогу должна обрасчаться 15-20 клиентов.
← →
Polevi (2002-03-22 10:26) [2]пишешь в сокет размер строки, сама строку с путем, затем сам файл
← →
daos (2002-03-22 11:22) [3]
> Polevi ©
А можно пример, я с сетями второй раз в жизни работаю, а надо очень.
← →
Song (2002-03-22 13:00) [4]http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=991237103&n=20
← →
daos (2002-03-22 14:09) [5]
> Polevi © (22.03.02 10:26)
> пишешь в сокет размер строки, сама строку с путем, затем
> сам файл
Но мучает вопрос: не перепутаются ли данные если обратятся несколько клиентов на сервер одновременно, т.е. строка с путем будет одного клиента, а фаил-другово?
← →
Song (2002-03-22 15:58) [6]Перепутаются. Поэтому нужно послать поток с файлом и ждать от получателя положительного ответа, потом посылать следующий файл и т.д.
← →
daos (2002-03-22 17:01) [7]
> послать поток с файлом и ждать от получателя положительного
> ответа, потом посылать следующий файл и т.д.
Не совсем вас понял.
Стоит вопрос: у меня есть серверное приложение(1шт) и 10 клиентских, на разных компьютерах. Если я посылаю текст+поток с одного компутера и текст+поток с другого одновременно-могут-ли они перепутаться и как этого избежать.
Кстати в королевтве дельфи только что прошол что для каждого клиента сервер выделяет отдельный сокет.
← →
Song (2002-03-22 17:41) [8]Так и есть для каждого клиента отдельный сокет. А что, что не так должно быть?
Например:
для клиента 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;
Знаю, что возможно сразу будет непонятно, но адаптировал как мог.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c