Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TcpClient и TcpServer или Indy Delphi 7 [D7]


Asd ©   (2004-08-20 21:11:00) 

Подскажите плиз как сделать обмен файлами по сети если можно дайти исходничок.

Ещё не подскажите чё я делаю не так, это я хочу удалённо выключить компьютер.

procedure TForm1.Button4Click(Sender: TObject);
begin
 TcpClient1.RemoteHost := edtRemoteHost.Text;
 try
   if TcpClient1.Connect then
     TcpClient1.Sendln('Zew0');
 finally
   TcpClient1.Disconnect;
 end;
end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
 ClientSocket: TCustomIpClient);
var
 s: string;
 DataThread: TClientDataThread;
begin
 s := ClientSocket.Receiveln;
 if s='Ris1' then
 Ris;
end;


Asd   (2004-08-20 22:23:00) [1]

Ещё не подскажешь Компоненты TNMMsg и TNMMsgSer можно в Delphi 7 установить


Asd   (2004-08-20 22:09:00) [2]

Огромное спасибо


Klopan   (2004-08-20 22:02:00) [3]

component > install packages > add... > c:\program files\Borland\Delphi7\Bin\dclsockets70.bpl > ok.

усЁ..


Asd   (2004-08-20 21:57:00) [4]

Напомни плиз как его установить


Klopan   (2004-08-20 21:50:00) [5]

установи package файл "dclsockets70.bpl" он в
\Borland\Delphi7\Bin


Asd   (2004-08-20 21:43:00) [6]

Спаисбо но это В Delphi 7 работать не будет там нету этих компонентов, точнее они заменены и с новыми я разобраться не могу.


Klopan   (2004-08-20 21:20:00) [7]


procedure TForm1.Image1Click(Sender: TObject);
begin
 // Это процедура для открытия сокета на ПРИЁМ (RECEIVING).
 // Button1.Click is this procedure as well.
 ClientSocket1.Active:= true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 // Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
 ServerSocket1.Active:= true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
 // Посылаем команду для начала передачи файла.
 Socket.SendText('send');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
 s, sl: string;
begin
 s:= Socket.ReceiveText;
 // Если мы не в режиме приёма:
 if not Reciving then
 begin
   // Теперь нам необходимо получить длину потока данных.
   SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
   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;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
 ms: TMemoryStream;
begin
 // Клиент получает команду на передачу файла.
 if Socket.ReceiveText = 'send' then
 begin
   ms:= TMemoryStream.Create;
   try
     // Получаем данные на передачу.
     Image1.Picture.Bitmap.SaveToStream(ms);
     ms.Position:= 0;
     // Добавляем длину данных, чтобы клиент знал,
     // сколько данных будет передано
     // Добавляем #0 , чтобы можно было определить,
     // где заканчивается информация о размере.
     Socket.SendText(IntToStr(ms.Size) + #0);
     // Посылаем его.
     Socket.SendStream(ms);
   except
     // Итак, осталось освободить поток, если что-то не так.
     ms.Free;
   end;
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо