Главная страница
    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.115 c
6-1163695742
p314
2006-11-16 19:49
2007.05.20
ssl


4-1166388905
Шоломицкий С. А.
2006-12-17 23:55
2007.05.20
Подать питание. COM или USB


2-1178098759
Washington
2007-05-02 13:39
2007.05.20
Надо закрыть доступ к 2-м файлам.


15-1177022591
rsacoder
2007-04-20 02:43
2007.05.20
Посоветуйте что-нибудь


2-1177836708
defiler
2007-04-29 12:51
2007.05.20
Вопрос по DBNavigator...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский