2011-06-23 10 views
8

Quiero alojar un servidor web y quiero usar VBA para hacerlo. es posible? Solo estoy haciendo esto para demostrar que alguien está equivocado y realmente quiero hacer este programa.¿Es posible alojar un servidor web en VBA?

¿Es posible crear un servidor web realmente simple (solo escucha las solicitudes de obtención)? La ayuda sería muy apreciada.

EDITAR

Estoy intentando algo como esto

Sub startServer() 
    Set wunsock = CreateObject("OSWINSCK.Winsock") 
    wunsock.LocalPort = 80 
    wunsock.Listen 
End Sub 

Sub wunsock_ConnectionRequest(ByVal requestID As Long) 
    If sockMain.State <> sckClosed Then 
     sockMain.Close 
    End If 
    sockMain.Accept requestID 
End Sub 

Private Sub wunsock_DataArrival(ByVal bytesTotal As Long) 
    Dim strData As String 
    sockMain.GetData strData, vbString 
    txtStatus.Text = txtStatus.Text & _ 
     strData & vbCrLf 
End Sub 

Sin embargo esto no funciona?

+8

"... para probar que alguien está equivocado ..." -> +1 –

+0

http: // social .msdn.microsoft.com/Forums/en-US/isvvba/thread/a9262dc9-5e97-4b61-9fa5-014976c47527 /? –

+1

Un servidor web incrustado en Excel. La mente se confunde. – anon

Respuesta

1

No estoy seguro de entender completamente la pregunta. Generalmente, no "aloja un servidor web", aloja un sitio web.

Pero si puedes hacer tomas TCP con VBA, entonces puedes hacer un servidor web increíblemente simple siguiendo el protocolo estándar HTTP.

Editar: basándote en tu comentario, sí puedes hacer un servidor web simple siempre y cuando puedas abrir un socket TCP.

+0

Quiero escuchar las solicitudes en un puerto a una página web (etc. localhost: 234/hi.html). No necesita responder ni nada. – David

3

http://www.ostrosoft.com/oswinsck.asp#inst

es un tipo de Winsock de biblioteca que se puede utilizar de VBA. Sin embargo, es posible hacer lo que estás buscando hacer, pero no es lo más eficiente que puedes hacer.

Aplaudo su tenacidad espero que funcione para usted.

+0

Reow. Gracias por eso: D – David

+0

Estoy intentando algo como esto Sub startServer() Establecer wunsock = CreateObject ("OSWINSCK.Winsock ") wunsock.LocalPort = 80 wunsock.Listen End Sub Sub wunsock_ConnectionRequest (ByVal requestID como de largo) Si sockMain.State <> sckClosed Entonces sockMain.Close End If End Sub sockMain.Accept requestID Private Sub wunsock_DataArrival (ByVal bytesTotal como largo) Dim strData como String sockMain.GetData strData, vbString txtStatus.Text = txtStatus.Text & _ strData & vbCrLf End Sub Sin embargo, ¿no funciona? – David

+2

@David: No coloque toneladas de código en un Comentario. Es obviamente ilegible. Póngalo en su pregunta como una edición, y formatéelo como 'código'. Lo haré por usted esta vez. –

1

Bueno, a riesgo de violar el espíritu de la cuestión, siempre se puede utilizar el soporte de VB para funciones de biblioteca y simplemente crear una unión a uno de una serie de opciones de servidor Web de lenguaje C (tales como http://www.acme.com/software/micro_httpd/ biblioteca, http://www.gnu.org/software/libmicrohttpd/ o http://code.google.com/p/mongoose/). Tendría que crear archivos DLL del servidor web seleccionado, pero eso es razonablemente fácil de hacer y esto funcionará perfectamente en VBA.

0

¿Cuánto VBA necesita? These videos demuestran que un complemento C# se utiliza para servir archivos estáticos y para el envío de solicitudes REST al código VBA utilizando Application.Run

Cuestiones relacionadas