Videli smo ranije u jednom od mojih tutorijala kako možemo proveriti novu verziju programa preko servera. Hajde da napravimo nešto komplikovanije.
Nivo : Napredan (neće biti opisano korak po korak kako napraviti projekat, nazvati kontrole i sl.)
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.
Potrebno za ovaj tutorijal :
FTP Nalog
VB.NET
15 minuta slobodnog vremena
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
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"
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.
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
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
Ovako izgleda forma :
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
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")
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.
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
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
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.
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.
|