HTTP problem
Jeg er ved at bygge en 'redirecting proxy', altså så jeg kan have mere end en maskine kørende med web-server på port 80, men kun med 1 offentlig IP...Mit problem ligger nu i at jeg på en test-side har 4 billeder, vel at mærke forskellige billeder, som den skal hente...
Når den så henter de 4 billeder, er der i 9 ud af 10 gange 2 af billederne der bliver ens, og det er ikke lige sikkert at det er de samme 2 hver gang...
Hvad kan det skyldes??
Et lille udsnit af koden der kommunikerer mellem server og klient:
Private Sub sockClient_DataArrival(Index As Integer, ByVal bytesTotal As Long)
sockClient(Index).GetData tmpIncoming, vbString
strdata$ = tmpIncoming
If Mid$(strdata$, 1, 3) = "GET" Then 'If it is trying to get a site, find out
findget = InStr(strdata$, "GET ") ' the site they want then set requestedPage$
spc2 = InStr(findget + 5, strdata$, " ") ' to it.
pagetoget$ = Mid$(strdata$, findget + 4, spc2 - (findget + 4))
requestedpage$ = pagetoget$
ElseIf Mid$(strdata$, 1, 4) = "POST" Then 'This is the code when it is trying to post something!
findpost = InStr(strdata$, "POST ") 'the data where filtered in the ConnectionRequest
spc2 = InStr(findpost + 5, strdata$, " ") 'Function of the winsock control
pagetopost$ = Mid$(strdata$, findpost + 5, spc2 - (findpost + 5))
requestedpage$ = pagetopost$
End If
Debug.Print requestedpage$
arrIncoming = Split(tmpIncoming, vbCrLf)
For i = LBound(arrIncoming) To UBound(arrIncoming)
arrHost = Split(arrIncoming(i), ": ")
If arrHost(0) = "Host" Then
Hosten = arrHost(1)
Exit For
End If
Next i
Redirect = mfncGetFromIni("Redirect", Hosten, App.Path & "\proxy.ini")
If Redirect = "" Then
Redirect = mfncGetFromIni("Redirect", "default", App.Path & "\proxy.ini")
End If
List.SelColor = vbBlack
List.SelText = Now & ": " & sockClient(Index).RemoteHostIP & " requested " & requestedpage$ & " (" & Redirect & ")" & vbCrLf
sockServer(Index).Close
DoEvents
Unload sockServer(Index)
DoEvents
Load sockServer(Index)
DoEvents
sockServer(Index).Protocol = sckTCPProtocol
sockServer(Index).RemotePort = 80
sockServer(Index).RemoteHost = Redirect
sockServer(Index).Connect
For j = 0 To 1000
DoEvents
Next j
If sockServer(Index).State = 7 Then
sockServer(Index).SendData tmpIncoming
Debug.Print Index & ":"
Debug.Print requestedpage$
ElseIf sockClient(Index).State = 7 Then
sockClient(Index).SendData error404
' Debug.Print error404
End If
End Sub
Private Sub sockClient_SendComplete(Index As Integer)
If requestedpage$ <> "" Then 'f the requested page doesn't = nothing then...
requestedpage$ = "" 'clear the requestedPage varible.
sockClient(Index).Close 'Close the connection.
If sockServer(Index).State = 7 Then sockServer(Index).Close
End If
If sockServer(Index).State = 7 Then sockServer(Index).Close
End Sub
Private Sub sockServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
sockServer(Index).GetData serverIncoming, vbString
If sockClient(Index).State = 7 Then
sockClient(Index).SendData serverIncoming
' Debug.Print serverIncoming
End If
End Sub
Nogen der kan se en fejl der vil betyde at den laver ged i noget af det??
Synes jeg har testet de forskellige variabler, og de ser ud til at indeholde det de skal...
Mvh. Morten
