FTP Manipulisanje, aplikacija 100% zavisna od servera - Tutorijal VB.NET

FTP Manipulisanje, aplikacija 100% zavisna od servera - Tutorijal VB.NET

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12118

Videli smo ranije u jednom od mojih tutorijala kako možemo proveriti novu verziju programa preko servera. Hajde da napravimo nešto komplikovanije.

Arrow Nivo : Napredan (neće biti opisano korak po korak kako napraviti projekat, nazvati kontrole i sl.)

Idea Ideja :
Imati aplikaciju koja 100% zavisi od servera.
Imaćemo login formu preko koje će korisnik napraviti nalog na server i ulogovati se u program.
Zatim ćemo korisniku prikazati neku poruku i dozvoliti mu da upiše neki fajl na server.
Koristićemo FTP ovog puta.

Question Potrebno za ovaj tutorijal :
FTP Nalog
VB.NET
15 minuta slobodnog vremena

Arrow Korak #1 - Pravljenje FTP naloga.
Za ovaj tutorijal će nam trebati FTP da bi smo mogli da skidamo i kačimo fajlove.
Napravićemo nalog na www.drivehq.com

Ja ću koristiti primer ime (nije stvarno registrovano) i primer lozinku za ovaj tutorijal.
"Registrovao" sam nalog na drivehq.com :
Username : Tutorijal1
Password : Tutorijal

Arrow Korak #2 - Kačenje potrebnih fajlova na FTP[
Napravićemo jedan txt fajl koji ćemo nazvati "motd.txt", unutra napišite tekst
"ThePhilosopher piše najbolje tutorijale" Cool

Zatim napravite nov tekst fajl "podesavanje.txt" unutra napišite broj
"1"

Napravite nov tekst i nazovite ga "poruka.txt" unutra ne pisite nista.
Sačuvajte tekstove i okačite ih na akaunt na drivehq u root folderu.

Arrow Korak #3 - Pravljenje interfejsa
Imaćemo tri forme.
Na prvoj formi napravite :
2 Tekst boxa
2 Label-a
2 dugmeta.

Podesite kontrole u "Properties" prozoru:

1. Textbox | Name = tbime 2. Textbox | Name = tblozinka 1. Label | Text = Korisnicko ime : 2. Label | Text = Lozinka: 1 dugme |Text = Uloguj se | Name = btnuloguj 2 dugme |Text = Registruj se | name = btnreg



Ovako izgleda forma :



Napravite novu formu i na njoj dodajte :

4 Label-a
3 tekst polja
2 dugmeta

Podesite kontrole u "Properties" prozoru:

1. Label | Text = Molimo ispunite sledeci formular: 2. Label | Text = Korisnicko ime 3. Label | Text = Lozinka 4. Label | Text = Unesite lozinku ponovo 1. Textbox | Name = tbime 2. Textbox | Name = tblozinka | Password char = * 3. Textbox | Name = tbprovera | Password char = * 1. Dugme | Name = btnregistruj | Text = Registruj 2. Dugme | Name = btnotkazi | Text = Otkazi
Idea Ovako izgleda forma :



Napravite novu formu i dodajte sledeće kontrole :

3 Label-a
2 textboxa
3 Dugmeta

Podesite parametre ovako u "Properties" prozoru :

1. Label | Name = motd | Text = "" (obrišemo sve iz ovog polja) 2. Label | Text = "Upisite poruku serveru:" 3. Label | Text = "Vasa poruka sa servera" 1. Textbox | Multiline = True | Name = tbsalji 2. Textbox |Multiline = True | Name = tbprimi 1. Dugme | Name = btnsalji | Text = Posalji serveru 2. Dugme | Name = btnprimi | Text = Primi tekst od servera 3. Dugme | Name = izlaz | Text = Izađi

Idea Ovako izgleda forma :




Arrow Korak #4 - Programiranje

Prvo što ćemo uraditi jeste napisati proveru da li korisnik postoji na serveru.
Da bi smo to uradili moramo da se povežemo na FTP server.
Vratite se na prvu formu i u dugmetu "Uloguj se" upišite sledeće :

Pre svega ćemo napisati proveru za prazan tekst :

    If tbime.Text = "" Or tblozinka.Text = "" Then  MsgBox("Tekst polja ne smeju biti prazna, upisite korisnicko ime i lozinku i pokusajte                ponovo") 'Zatim ćemo se povezati na FTP Server ' U istoj proveri radimo sledeće         Else ' Ako postoji tekst onda :   Try     Dim br As String 'deklarisemo string koji će sadržati informaciju sa servera         Dim logovanje As New Net.WebClient 'pravimo nov webclient                 ' Upisujemo naše korisničko ime i našu lozinku za drivehq.com                      logovanje.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal")                   'kacimo se na server i preuzimamo fajl               br = logovanje.DownloadString("ftp://ftp.drivehq.com/" & tbime.Text & ".txt") ' ukoliko postoji fajl pokusaj proveri da li je tacna lozinka                    Try                     If br = tblozinka.Text Then                        'ukoliko jeste prikazi novu formu                   Form3.Show()                 Me.close                     End If                 Catch ex As Exception                         ' Nije tacna lozinka, prikazi poruku korisniku                   MsgBox("Uneli ste pogresnu lozinku")                 End Try ' ne postoji nalog, prikazi poruku             Catch ex As Exception                 MsgBox("Akaunt nije registrovan ")             End Try         End If

Exclamation Kačenje na server i preuzimanje podatka iz fajla :

Citat: Dim br As String
Dim logovanje As New Net.WebClient
logovanje.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal")
br = logovanje.DownloadString("ftp://ftp.drivehq.com/" & tbime.Text & ".txt")


Exclamation Try Catch Finally End Try metoda
Citat:Try
' Blok koda šta da pokuša

Catch ex as exception ' šta uraditi ako dođe do greške
Messagebox.Show (Ex.message) ' Daje direktnu poruku koja se desila korisniku
End try


Sada ćemo napisati kod za registraciju.
Idite na drugu formu.
Pišemo kod za dugme "Registruj me".

Pre svega ćemo proveriti da li se lozinke u oba polja podudaraju i da li su polja prazna, zatim ćemo poslati upit i zatražiti dozvolu od FTP servera da okačimo fajl.

'ako su polja prazna onda   If tbime.Text = "" Or tblozinka.Text = "" Or tbprovera.Text = "" Then  MsgBox("Morate popuniti sva polja") 'prikazi poruku o gresci Else 'ako nisu If tblozinka.Text = tbprovera.Text Then 'proveri da li se fajlovi podudaraju  Try 'pokusaj 'napravićemo privremeni fajl sa korisnikovim podacima  Dim privremenifajl As New IO.StreamWriter(Application.StartupPath & "\" & tbime.Text & ".txt")                     privremenifajl.WriteLine(tblozinka.Text)                     privremenifajl.Close()                 Catch ex As Exception                     MessageBox.Show(ex.Message)                 End Try 'pokusaj da okacis fajl                 Try 'ovde deklarisemo "upit" kao ftpwebrequest i unosimo podatke hosta i imena fajla                     Dim upit As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://ftp.drivehq.com/" & tbime.Text & ".txt"), System.Net.FtpWebRequest) 'saljemo zahtev ftp serveru 'zatim saljemo korisnicko ime i lozinku                     upit.Credentials = New System.Net.NetworkCredential("tutorijal1", "tutorijal") 'objasnjavamo metodu koju cemo koristiti                     upit.Method = System.Net.WebRequestMethods.Ftp.UploadFile 'citamo fajl                     Dim korisnik() As Byte = System.IO.File.ReadAllBytes(Application.StartupPath & "\" & tbime.Text & ".txt") 'kacimo fajl                     Dim abc As System.IO.Stream = upit.GetRequestStream()                     abc.Write(korisnik, 0, korisnik.Length)                     abc.Close()                     abc.Dispose()                 Catch ex As Exception                     MessageBox.Show(ex.Message)                 End Try             Else ' ako se ne podudaraju lozinke prikazujemo gresku korisniku                 MsgBox("Lozinke se ne podudaraju, proverite lozinke ponovo")             End If         End If     End Sub

Uh, baš dosta koda, zar ne?

Sada konačno imamo sve i sada kada pokuša, korisnik može da se uloguje jer se registrovao. Dakle samo čitamo fajl sa imenom sa hosta koji ima lozinku unutra i proveravamo da li je lozinka ispravna i da li postoji korisnik.

Otvorite treću formu

Sada ćemo da učitamo "MOTD" (Message of the day) tj. malu poruku koju korisnik dobije kada se uloguje.

U Load eventu forme kucamo :

Dim br As String 'string gde cemo ubaciti podatke Dim logovanje As New Net.WebClient  'nova deklaracija klijenta logovanje.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal") 'korisnicka imena br = logovanje.DownloadString("ftp://ftp.drivehq.com/motd.txt")  'preuzimamo podatak iz motd.txt fajla lblmotd.text = br 'primenjujemo vrednost stringa u label

I dobijemo "ThePhilosopher pise najbolje tutorijale" u toj label kontroli.

Exclamation
Ako sada izmenimo fajl na serveru i ponovo ucitamo formu prikazaće se nova poruka koju smo napisali.

Sada ćemo da "sredimo" slanje poruke, dvoklik na dugme "Posalji serveru" :

Dim br As String         Dim logovanje As New Net.WebClient         logovanje.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal")         br = logovanje.UploadString("ftp://ftp.drivehq.com/poruka.txt", tbsalji.Text) 'primetiti da ovog puta koristimo .UploadString

Dvoklik na "Primi tekst"

'isto kao i do sada, preuzimanje podatka     Dim br2 As String         Dim logovanje2 As New Net.WebClient         logovanje2.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal")         br2 = logovanje2.DownloadString("ftp://ftp.drivehq.com/poruka.txt")         tbprimi.Text = br2

Sada ćemo videti kako možemo da iskoristimo podešavanje sa servera:
Dvoklik na formu

   Dim br3 As String         Dim logovanje3 As New Net.WebClient         logovanje3.Credentials = New Net.NetworkCredential("tutorijal1", "tutorijal")         br3 = logovanje3.DownloadString("ftp://ftp.drivehq.com/podesavanje.txt") 'do sada je sve poznato, skidamo vrednost fajla zatim ' prikazujemo poruku koju vrednost sadrzi tekst na serveru         MsgBox("Fajl na serveru sadrži broj " & br3) ' i konacno manipulacija klijent programom ' ako je vrednost na serveru 1 onda ce program promeniti boju u "Aqua" ako je 0 onda ce program promeniti boju u "black".         If br3 = "1" Then             Me.BackColor = Color.Aqua         ElseIf br3 = "0" Then             Me.BackColor = Color.Black

Arrow Zaključak

Naučili smo da učitamo podatak, pošaljemo podatak i pošaljemo fajl. Takođe smo naučili kako da manipulišemo klijent aplikacijom preko fajlova na serveru

Exclamation
Primetiti da kada pritisnete bilo koje dugme, dok aplikacija uspostavlja vezu sa serverom aplikacija ne reaguje uopšte na klik, ovo je zato što program čeka server, može da se zaobiđe a o tome ćemo učiti uskoro, biće reči o threads načinu rada

P.S. Molim vas ako kopirate ovo na druge forume, "bacite" link do mycitija, dešavalo se ranije da ljudi "kradu" tutorijale odavde korisnicima i postuju ih na druge forume tvrdeći da su njihovi, svi moji fajlovi su zaštićeni Creative Commons licencom koja ne dozvoljava kopiranje bez linka ka ovom forumu i ovoj temi, međutim pre svega je vrlo ružno ukrasti nečiji rad i tvrditi da je vaš. (Nije da je ovaj tutorijal nešto pro ali je zaista ružno to uraditi bilo kome)

P.P.S. Izvinjavam se za izgled koda, vb ga formatira tako + mc ima ograničeno mesto tako da nečitljivo izgleda.

Ako ste stigli do ovog reda, svaka čast i hvala što ste pročitali ceo tutorijal. Ziveli

Moguće je da postoji greška, nisam uporedo radio i pisao kod 100% a i kasno je, ako postoji javite se slobodno da rešimo.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 786 korisnika na forumu :: 52 registrovanih, 6 sakrivenih i 728 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., aleksandar_tatic, aligrudici, AMCXXL, Andrija357, borko_marjanovic, branko7, cavatina, comi_pfc, dekir, dexus, doom83, dragoljub11987, ILGromovnik, ivan979, ivica976, Kalalaika, Kožedub, krunomiletic5, Logic005, ltcolonel, Markobg, mačković, MB120mm, Mercury2, Milan Kosić, milandlc84.wow, milimoj, miracoric28, neko iz mase2, nesa1962, nesic1, pedja63, pein, pokemoni, proka89, RADOVAN.S, riva2, rkekoke, robertino, rodoljub, rovac, Shomy, shone34, stokanovicm, Vlada1389, vobo, voja64, weez, YU-UKI, zgembo