Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Tiedoston haku netistä Winsockilla

Sivun loppuun

sooda [18.12.2003 17:35:17]

#

Hakee intternetmaailmasta tiedoston Winsockin avulla. Käyttää ihan sitä samaa tekniikkaa kuin selaimetkin, eli HTTP:tä. Lisää formille Winsock ja jätä se "Winsock1":ksi. Eli siis jos haluat filen netistä messagelootaan niin esim. MsgBox GetNetFile("www.ohjelmointiputka.net"), antaa palautusarvona sisällön.

Private HostiName As String 'remootti hosti(mikä ihme se on suomeks?!?)
Private Tiedosto As String 'hostin tiedosto
Private Vastaus As String 'mitä hosti on kertonut
Private Valmista As Boolean 'nimensä mukainen

Public Function GetNetFile(ByVal Osote As String)

    'knapataan pois turha http:// juttu
    If LCase(Left(Osote, 7)) = "http://" Then Osote = Mid(Osote, 8)
    Mesta = InStr(Osote, "/") 'katkaisukohta
    If Mesta = 0 Then Osote = Osote & "/": Mesta = Len(Osote) 'jos siinä ei ole kauttaviivoja niin lisätään yks =)
    HostiName = Left(Osote, Mesta - 1) 'hosti
    Tiedosto = "/" & Mid(Osote, Mesta + 1)  'fileé
    Winsock1.Close 'suljetaan se ettei tuu turhia virheitä
    Winsock1.LocalPort = 0 'varmuuden vuoksi...
    Winsock1.Connect HostiName, 80 'ja yhdistetään
    s = timer 'aloitusaika
    Do: DoEvents: Loop Until Valmista or (s + 10 < timer) 'odotetaan että saadaan sivu tai timeoutti(10 sek)
    Winsock1.Close 'suljetaan soketti
    Valmista = False 'ettei ensi kutsulla luulisi että heti valmista
    GetNetFile = Vastaus 'palautetaan sivu joka saatiin
    Vastaus = ""

End Function

Private Sub Winsock1_Close()

    'servu sulki soketin elikkä kaikki tieto saatu
    'mukava tieto, käytä jos haluat
    'kertoo esim. ajan, serverin, keksit, ...
    Headeri = Left$(Vastaus, InStr(Vastaus, vbCrLf & vbCrLf) - 1)
    'napataan otsikko pois varsinaisesta sivusta
    Vastaus = Mid(Vastaus, InStr(Vastaus, vbCrLf & vbCrLf) + 4)
    Valmista = True 'kun on valmista niin on valmista

End Sub
Private Sub Winsock1_Connect()

    'tiedoston pyyntö otsikko
    FilePyyntö = "GET " & Tiedosto & " HTTP/1.1" & vbCrLf & _
                 "Host: " & HostiName & vbCrLf & _
                 "Connection: close" & vbCrLf & _
                 "Accept: */*" & vbCrLf & _
                 vbCrLf
    'lähetetään pyyntö
    Winsock1.SendData FilePyyntö

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

    Dim Data As String
    Winsock1.GetData Data 'haetaan data
    Vastaus = Vastaus & Data '...ja lisätään se koko dataan

End Sub

ZcMander [18.12.2003 20:56:49]

#

Eli hatusta vedetty?

Gwaur [18.12.2003 21:37:14]

#

host = osoite

T.M. [18.12.2003 22:12:21]

#

host = isäntä, näin sanoo minun EuroTranslaattorini

sooda [19.12.2003 13:13:11]

#

puoliks hatusta, testattu koulussa vb6:lla... toi isäntä kuulostaa aika hyvin kyllä hostilta. En kyllä kuitenkaan opi sanomaan "isäntä" tai "asiakas" :P

remontti-reiska [19.12.2003 13:20:27]

#

hosti on aina hosti minun mielstäni

T.M. [19.12.2003 14:20:57]

#

no niin minunkin mielstäni!

Monkkats [20.12.2003 17:15:45]

#

Tota oonki tarvinnu! Hyödellinen koodivinkki! Mä löysin kyl yhest mun VB Internet Ohjelmointi-kirjasta samanlaisen, mut reilusti pienempi lähdekoodi eikä se sit lopuks toiminukkaa...

tejeez [20.12.2003 22:25:49]

#

Ihan hyvähän tää on. Tämmönen yksinkertanen http clientti :)

jrantala [21.12.2003 15:59:55]

#

Mistäs ton Winsockin pystyy lisäämään? :))

sooda [21.12.2003 19:25:47]

#

noh, klikkaa oikealla korvalla sitä palkkia mistä saa nappuloita ja tekstilootia ym(mikä ihme sen nimi nyt oikeen??) ja valitse popupmenusta se Components... ja siitä sitten Microsoft Winsock Control.

miiro [22.12.2003 10:21:20]

#

siis mul ei ainakaan oo komponents valikos tota vinsok komentoo :P

jrantala [22.12.2003 12:46:50]

#

Kato prkl, olise siellä... Omasta mielestäni katoin jo Mikkisoftin kaikki kohdat... Taidan vaan olla puusilmä :)

Heikki [22.12.2003 14:47:17]

#

Winsock-kontrolli löytyy VB6:sta vain Professional ja Enterprise-versioista.

sooda [22.12.2003 21:25:37]

#

no löytyyhän se toki jos lisäät sen sinne listaan ite sillä Browse napilla, etit vaan sen ocx tiedoston ja kerrot missä se on.

Sharph [23.12.2003 09:42:19]

#

Saako sen OCX:sin jostain ladattavaksi? Voisin testata toimiiko VB4:sella

sooda [24.12.2003 21:38:37]

#

kato mun sivuilta: http://koti.mbnet.fi/koodaaja/lataukset/load.php?file=mswinsck.ocx

sooda [24.12.2003 21:39:30]

#

siis http://koti.mbnet.fi/koodaaja/lataukset/load.php?file=mswinsck.zip

Bill Keltanen [01.03.2004 08:13:32]

#

Remootti -> Remote -> etä****** tjsp

Fisher [15.05.2004 19:30:36]

#

www.googe.fi ja ... ups! kone tilttaa!

sooda [23.05.2004 19:01:59]

#

Ei se kyllä mihinkään tilttaa, jää vaan junnaamaan :D noh ongejlma korjattu, timeoutti lisätty.

D4_B34M [17.10.2004 15:19:15]

#

Onks ihan normaalii et tulee "Invalid procedure call or argument" ja se maala HostiName = Left(Osote, Mesta - 1) 'hosti
Toi tulee jos mä lisään:
Private Sub Form_Load()
MsgBox GetNetFile("www.ohjelmointiputka.net")
End Sub

Mut vaan jos lisään...

sooda [18.10.2004 09:52:29]

#

Ohhoh, D4_B34M: korjattu. Toi virhe oli siitä että jos urlissa ei ole lainkaan kauttaviivoja :)

Happi [31.03.2005 16:28:48]

#

Pystyykö tohon vaihtamaan sitä mihin se lataa nuo filut ?

sooda [31.03.2005 18:47:22]

#

Mitennii mihin lataa, se lataa sen muuttujaan :)

hunajavohveli [06.11.2005 14:51:42]

#

Se tiedosto tulee funktion palautusarvona, ja sen arvon voi lykätä, mihin tahtoo. Kivasti toimii, mutta VB:n mokoma kaatuu aina, kun sammutan ohjelman, jossa käytän tota. :P

Juhko [10.03.2009 16:38:01]

#

Varmasti hyödyllinen vinkki, kiitos tästä.

siika [28.06.2009 19:51:05]

#

miten siit sais sellasen joka näytttää messageboxis tämän http://koti.mbnet.fi/someone/ip.php ja mulla on vb6

siika [28.06.2009 19:51:27]

#

siis ton linkin sisällön

alker [04.10.2009 18:59:10]

#

Hei! Miten pystyy rivi kerrallaan lukemaan internet fileä? Siis auttakaa ny vähän!

alker [09.10.2009 19:47:05]

#

HEI! Taas. Kun sammutan ohjelman missä tuo on niin miksi se alkaa lagaamaan?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta