Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

TClientSocket и TServerSocket   Найти похожие ветки 

 
Doom_2 ©   (2007-04-30 19:39) [0]

Уважаемые мастера, возникла необходимость организовать передачу файлов с помощью TClientSocket и TServerSocket.
Вот статья, которой я воспользовался:
http://www.hostmake.ru/articles/delphi/384/
Что не понятно:
Есть разница - кто подключается первым? Для данного примера (если просто заменить
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
на
procedure TForm1.ServerSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
- возможно добиться передачи файла от пользователя к серверу?

Короче ситуация такая: я знаю IP-адрес получателя файла (Port, как понял, можно выбрать практически любой), т.е. по вышеописанному примеру - он должен быть клиентом (принимать файл), но тогда он-же и должен быть инициатором соединения... Проверить негде, поэтому мне необходим совет (чисто теоретически) - как мне переделать вышеуказанную статью под свои нужды.

Буду благодарен за любую полезную информацию!


 
Doom_2 ©   (2007-04-30 19:45) [1]

Т.е. мне важны два вопроса:
1. Соедениние - как оно инициируется?
2. Передача файлов - она в Socket-ах двухсторонняя?


 
medved_68 ©   (2007-04-30 20:42) [2]


> 1. Соедениние - как оно инициируется?

ClientSocket.Connect, ClientSocket.Open.

> 2. Передача файлов - она в Socket-ах двухсторонняя?

Да, но только при активированном соединении


 
Doom_2 ©   (2007-04-30 20:53) [3]

Я почему спрашиваю - вот очередной кусок кода с Delphi World:
procedure TForm1.FormCreate(Sender: TObject);
begin
 // Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
 ServerSocket1.Active:= true;
end;

Получается: по-скольку я знаю ip только принимающего компьютера, значит я его должен сделать сервером. Но с сервера мы отправляем (по крайней мере, я не нашёл примера демонстрирующего обратное), а мне надо принять!

Как быть?


 
redlord   (2007-04-30 21:07) [4]

в твоем случае не важно кто сервер а кто клиент
но сервер на то и сервер чтоб обслуживать подключившихсяя клиентов.
а в какую сторону пойдут донные должно волновать тока программиста.
а чтоб клиент начл передачу то код отправки файла поставь в событие клиента onconnect


 
Doom_2 ©   (2007-05-01 09:03) [5]

Прошу прощения за надоедливость ;-)
1. Отправить сообщение по нажатию на кнопку можно так:
- от клиента: ClientSocket1.SendText("send");
- от сервера: ServerSocket1.SendText("send");
Принять так: (куда поместить эти строки???)
- от клиента: ClientSocket1.ReceiveText;
- от сервера: ServerSocket1.ReceiveText;
2. Передача файлов: (нуждаюсь в нескольких подсказках!)
- от сервера --> серверу

var  s, sl: string;
begin
 s:= Socket.ReceiveText; //- Это для чего?
 if not Reciving then
 begin
   SetLength(sl, StrLen(PChar(s))+1);
   StrLCopy(@sl[1], PChar(s), Length(sl)-1);
   DataSize:= StrToInt(sl);
   Data:= TMemoryStream.Create;
   Delete(s, 1, Length(sl));
   Reciving:= true;
 end;
 try
   Data.write(s[1], length(s));
   if Data.Size = DataSize then
   begin
     Data.Position:= 0;
     Image2.Picture.Bitmap.LoadFromStream(Data);
     Data.Free;
     Reciving:= false;
     Socket.Close;
   end;
 except
   Data.Free;
 end;
end;
===========================================
var ms: TMemoryStream;
begin
 if Socket.ReceiveText = "send" then
 begin
   ms:= TMemoryStream.Create;
   try
     Image1.Picture.Bitmap.SaveToStream(ms);
     ms.Position:= 0;
     Socket.SendText(IntToStr(ms.Size) + #0);
     Socket.SendStream(ms);
   except
     ms.Free;
   end;
 end;
end;

А от клиента к серверу как отправить??? В какие процедуры прописывать?


 
Doom_2 ©   (2007-05-01 09:04) [6]

"2. Передача файлов: (нуждаюсь в нескольких подсказках!)
- от клиента --> серверу"


 
medved_68 ©   (2007-05-02 10:16) [7]


> "2. Передача файлов: (нуждаюсь в нескольких подсказках!)
> - от клиента --> серверу"

ClientSocket.Socket.Send.....(Text,Buffer) на твое усмотрение :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
2-1178097706
..::KraN::..
2007-05-02 13:21
2007.05.20
Открытие файла


2-1177747186
Vlad Oshin
2007-04-28 11:59
2007.05.20
Excel неправильно выдает гиперссылки у ячеек. Почему?


2-1177584697
Пока что юзер
2007-04-26 14:51
2007.05.20
Как запаковать файлы в arj c помощью Делфи?


1-1174900874
Lexander
2007-03-26 13:21
2007.05.20
RxRichEdit - объеденить несколько файлов


2-1178197153
vitv
2007-05-03 16:59
2007.05.20
Запрос+null





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский