|
-
Sep 18th, 2008, 09:07 AM
#1
Thread Starter
PowerPoster
[RESOLVED] HTTP server
I am looking to incorporate a custom HTTP server into a program I am writing to allow web access to a number of the same controls already based in the program, and I have very little experience of winsock.
I found http://www.vbforums.com/showthread.php?t=532223 here and have managed to modify the "mini webserver" file listed to fit my needs for the most part, but I think I need to modify the way it does what it does now...would appreciate some advice (and I welcome other people to use this code themselves if they wish, I've edited it to make it totally liftable by other people...and when I get it working, I'll post the edited code in the same liftable way :-))
Okay, firstly I have the winsock control "ws(0)" on the form.
Code:
Private Sub Form_Load()
BaseData = "HTTP/1.0 200 OK " & vbCrLf & "Date: " & Format(Date, "DD MMMM YYYY") & " " & Format(Now, "hh:mm:ss") & " GMT" & vbCrLf & "Server: Apache/1.3.27 (Unix) PHP/4.0.6" & vbCrLf & "X-Powered-By: PHP/4.0.6" & vbCrLf & "Content-Type: text/html" & vbCrLf & "Age: 0" & vbCrLf: Debug.Print BaseData
ws(0).Listen
Me.Hide
End Sub
"BaseData" is the data returned by the HTTP server in the headers. I'm aware that this string isn't updated (I planned to do that soon, getting it working was the important part)...and I copied the data direct from the link listed above, I've not modified it at all (although, again, I plan to sometime)
Code:
Private Sub ws_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error GoTo Error
numserv = ws.Count
Load ws(numserv)
ws(Index).Close
ws(numserv).Accept requestID
DoEvents
ws(numserv).SendData BaseData
DoEvents
endit (numserv)
Error:
End Sub
"endit" is a command which closes then listens
Code:
Private Sub endit(numserv As Integer)
On Error GoTo Error
ws(numserv).Close
ws(numserv).Listen
Error:
End Sub
Lastly is the dataarrival section...this is where the problems are, I think.
I was having a problem at one point with file not sending completely so put in the do:doevents on line 4...I am sure there's a better way to do this, and would appreciate suggestions. I would guess there is some sort of .busy or something
Code:
Private Sub ws_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim bData As String: retdata = ""
ws(Index).GetData bData
Do: DoEvents: Loop While InStr(bData, "HTTP/1.1") = 0
f = InStr(bData, "GET"): g = InStr(f, bData, "HTTP/")
t = Mid(bData, f + 5, g - f - 6)
If t = "index.htm" Then [does stuff here]
'Should point out that all the if/then here generate a webpage in the
'string "retdata" which is then sent below
If retdata <> "" Then
'ws(Index).Accept ws(Index).Tag
DoEvents
ws(Index).SendData BaseData & vbCrLf & retdata
DoEvents
endit (Index)
End If
End Sub
One thing I've noticed is that on first connect I get a "document contains no data" error, which is obvious considering it sends nothing on first connect...however, I want to send something the first time and I want it to do the stuff listed in "dataarrival".
I should also point out that relevant strings are public (BaseData, for instance) so all data required is accessible in all subs/functions it is required in...that's not the issue.
Any help/suggestions appreciated :-)
Well, everyone else has been doing it :-)
Loading a file into memory QUICKLY - Using SendKeys - HyperLabel - A highly customisable label replacement - Using resource files/DLLs with VB - Adding GZip to your projects
Expect more to come in future
If I have helped you, RATE ME! :-)
I love helping noobs with their VB problems (probably because, as an amateur programmer, I am only slightly better at VB than them :-)) but if you SERIOUSLY want to get help for free from a community such as VBForums, you have to first have a grounding (basic knowledge) in VB6, otherwise you're way too much work to help...You've got to give a little if you want to get help from us, in other words!
And we DON'T do your homework. If your tutor doesn't teach you enough to help you make the project without his or her help, FIND A BETTER TUTOR or try reading books on programming! We are happy to help with minor things regarding the project, but you have to understand the rest of it if you want our help to be useful.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|