Gjakmarrja Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 Hei! Jeg har følgende kode: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click tOut.Text = "" Dim EPIP As IPEndPoint = New IPEndPoint(Dns.GetHostEntry(tHost.Text).AddressList(0), 80) Dim Sck As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Try Sck.Connect(EPIP) If Sck.Connected = False Then MsgBox("ERROR:" & vbCrLf & "Could not connect.") : Exit Sub Sck.Send(ASCII.GetBytes("GET / HTTP/1.0" & vbCrLf & vbCrLf)) Dim Buffer(1024) As Byte Dim ByteCount As Int16 = Sck.Receive(Buffer, Buffer.Length, 0) tOut.Text = ASCII.GetString(Buffer, 0, ByteCount) Do While ByteCount > 0 ByteCount = Sck.Receive(Buffer, Buffer.Length, 0) tOut.Text &= ASCII.GetString(Buffer, 0, ByteCount) Loop Catch MsgBox(Err.Description) End Try End Sub Denne funker fint på hele domener som -"www.ba.no", men hvis jeg prøver å laste en fil liksom inni selve domene. Altså link til en reportasje så får jeg feilmelding. -"Kjenner ingen slik vert" Noen ? Lenke til kommentar
j000rn Skrevet 14. juni 2006 Del Skrevet 14. juni 2006 HTTP 1.0 takler ikke hostname. Og siten som ligger på www.ba.no != siten som ligger på 80.232.36.54. Hvorfor bruker du ikke HTTP 1.1? Hvorfor bruker du sockets til dette? WebRequest/WebResponse eller WebClient gjør jo dette mye enklere for deg. Lenke til kommentar
alftore Skrevet 15. juni 2006 Del Skrevet 15. juni 2006 (endret) Vel du kan jo prøve følgende GET /path/to/page.html HTTP/1.1 Host: www.myhost.com Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click tOut.Text = "" Dim EPIP As IPEndPoint = New IPEndPoint(Dns.GetHostEntry(tHost.Text).AddressList(0), 80) Dim Sck As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Try Sck.Connect(EPIP) If Sck.Connected = False Then MsgBox("ERROR:" & vbCrLf & "Could not connect.") : Exit Sub Sck.Send(ASCII.GetBytes("GET / HTTP/1.1" & vbCrLf & "Host: " & tHost.Text & vbCrLf & vbCrLf)) Dim Buffer(1024) As Byte Dim ByteCount As Int16 = Sck.Receive(Buffer, Buffer.Length, 0) tOut.Text = ASCII.GetString(Buffer, 0, ByteCount) Do While ByteCount > 0 ByteCount = Sck.Receive(Buffer, Buffer.Length, 0) tOut.Text &= ASCII.GetString(Buffer, 0, ByteCount) Loop Catch MsgBox(Err.Description) End Try End Sub Ikke testet, men rent teoretisk. Endret 15. juni 2006 av alftore Lenke til kommentar
j000rn Skrevet 15. juni 2006 Del Skrevet 15. juni 2006 alftore: Var vel ikke så mye forskjell fra innlegget mitt vel? Uansett, tror feilen ligger i at han prøver å skrive full url inn i tHost.Text. Og Dns.GetHostEntry(tHost.Text) fungerer jo selvfølgelig ikke med katalog/filnavn... Derav feilmeldingen "Unknown host" ("Kjenner ingen slik vert" for de som ikke kan engelsk). En annen ting er at koden han kom med ikke var async. Bruk WebClient! Den har også OpenReadAsync metode slik at du slipper å gjøre dette selv... Lenke til kommentar
alftore Skrevet 15. juni 2006 Del Skrevet 15. juni 2006 Nei, jeg sa heller ikke at innlegget mitt var mye annerledes. Bare gav et eksempel på hvordan han kunne løse problemet. Bruk av webclient er fint, men det er jo også fint å få litt forståelse hvordan sockets og http protokollen fungerer. Så skjønner du kanskje hva som skjer galt når webclient mot formodning en dag feiler. Regner med at dette ikke er kode for noe proff program som skal ut i salg uansett. Lenke til kommentar
j000rn Skrevet 16. juni 2006 Del Skrevet 16. juni 2006 Enig, men det løste ikke problemet hehe Sånn jeg ser det er det DNS oppslaget hans som er galt i første omgang. "Så skjønner du kanskje hva som skjer galt når webclient mot formodning en dag feiler"... Det har allerede skjedd meg 2 ganger :-P (.Net 1.1 - har ikke testet 2.0) http://jorn.aakre.no/WebClientBug.entry Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå