[Ayuda]Web Server

Iniciado por Freeze., 4 Agosto 2007, 11:49 AM

0 Miembros y 1 Visitante están viendo este tema.

Freeze.

Hola ya tengo un web Server montado...

el problema esta aqui:


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Select Case Left(datos, 3)
Case "GET"
Dim n_File As Integer
Dim File As String
Dim Contenido As String
n_File = FreeFile
[b]File = "C:\AppServ\www\Nueva Web\index.htm"[/b]
Open File For Input As n_File
pro = Input$(LOF(n_File), #n_File)
Close n_File
Winsock1.SendData pro
End Select
End Sub


Que alli selecciono un solo archivo y al darle a un link en la web me sigue saliendo ese archivo..

¿Que hago?

Salu2..!! ::)

Hendrix

 :o :o Puedes explicarlo mejor?? La verdad es que no entiendo nada.... :-\ :-\
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Freeze.

Es como lo del Xeon Web Server O el Apache o cualquier servidor web...

Pero lo que pasa es que yo en una parte del code teng que leer la web que yo le mandare al Cliente (Protocolo Http) y le mando el contenido del index...

Cuando abro la web y le doy a otro link me sigue dando el index y no el otro link

Hendrix

Lo que tienes que hacer es leer toda la petición que te hace el explorador (Firefox por ejemplo). Este te pasa la pagina que el usuario quiere ver, tu lo analizas y se la pasas. Asi de facil  :)

PD: Al rezibir eso filtra el contenido de la petizión.....no vaya a ser que te mande lo siguiente:

GET C:\Archivos de Programa\documentosecreto.txt HTTP/1.0

Y tu se lo mantes...xDDDD

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Freeze.

Aun no entiendo explicate mejor... Por favor

Hendrix

sabes el protoclolo HTTP??? :huh:

Si lo sabes entenderas lo que te dije  ;)

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Freeze.

A veces me manda este:
[code]
GET / HTTP/1.1
Accept: */*
Accept-Language: es
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MEGAUPLOAD 2.0; .NET CLR 2.0.50727)
Host: MI IP
Connection: Keep-Alive


O este:


GET /imagenes/banner.jpg HTTP/1.1
Accept: */*
Referer: http://201.249.106.36/
Accept-Language: es
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MEGAUPLOAD 2.0; .NET CLR 2.0.50727)
Host: MI IP
Connection: Keep-Alive


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. [/code]

Si lo se el error es que quiere ver es una imagen -.- mejor dicho me cuesta usar Left y Split aunque lo se usar pero no se que pasa ahora.. :xD

Freeze.

Te entiendo pero la primera vez me manda VACIO un GET vacio que quieres que haga en esos casos -.-

Osea es dificil usar Split y Left cuando los resultados no son siempre los mismos..
Mientras estoy intentando pero si tienes solucion mas efectiva,......

NO DUDES en avisarme jejej

Freeze.

Bueno ya tengo esto:


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Text2.Text = datos
Select Case Left(datos, 3)
Case "GET"
n_File = FreeFile
File = "C:\appserv\www\Nueva Web"
FileO = "C:\AppServ\www\Nueva Web\index.htm"
Open FileO For Input As n_File
cont = Input$(LOF(n_File), #n_File)
Close n_File
Winsock1.SendData cont
File1 = Split(Text2.Text, " ")
File2 = File1(1)
File3 = File & Replace(File1(1), "/", "\")
Text3.Text = File3
End Select
End Sub


Con ese codigo logro colocar en un Textbox (text3) la ruta que me esta pidiendo el cliente...

Pero cuando le agrego Open File3 y bla bla bla me sale que File3 es esto : "/" osea es raro.. :P

Salu2..!!

LeandroA

hola lo que te manda es  la Cabesera de la peticion, la cabesera es divida del cuertpo por dos saltos de carro (vbcrlf), entonces tu tienes que verificar este salto de carro para  saber que termino la cabesera

mira

en el general declaras
Dim Data as string

Private Sub WS_DataArrival(ByVal bytesTotal As Long)
Dim Dato as string


WS.GetData Dato

Data = Data & Dato


If InStr(Data, vbCrLf & vbCrLf) Then 'significa que termino la cabesera

Ret = InStr(Data, "GET /")
If Ret Then
FileRequest = Mid(Data, 6, InStr(Data, "HTTP/1.1" & vbCrLf) - 7)

    If FileRequest = "" Then
        FileRequest = App.Path & "\Index.html"
    Else
        'tu sabras que mandas
    End If
End If

end if


como ves almaceno la variable Dato en Data porque puede que la cabesera no llegue 
entera de una sola ves, y si no lo haces se te arma un quilombo

te paso una aplicacion que hice, pero bueno cuando la hice no savia estas cosas y lo deje asi, pero te va a ayudar mucho. vas a encontrar muchas funciones que te van a servir para resolver como cambiar la url por un archivo de tu pc

http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/server-at-leandro.htm