⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 VB写的HTTP服务器小程序的一个示例
💻 FRM
字号:
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmMain 
   Caption         =   "HTTP服务器示例"
   ClientHeight    =   5595
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5550
   LinkTopic       =   "Form1"
   ScaleHeight     =   5595
   ScaleWidth      =   5550
   StartUpPosition =   3  '窗口缺省
   Begin MSComctlLib.StatusBar StatusBar1 
      Align           =   2  'Align Bottom
      Height          =   375
      Left            =   0
      TabIndex        =   3
      Top             =   5220
      Width           =   5550
      _ExtentX        =   9790
      _ExtentY        =   661
      _Version        =   393216
      BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
         NumPanels       =   3
         BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            AutoSize        =   1
            Object.Width           =   3069
         EndProperty
         BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            AutoSize        =   1
            Object.Width           =   3069
         EndProperty
         BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            AutoSize        =   1
            Object.Width           =   3069
         EndProperty
      EndProperty
   End
   Begin VB.Timer Timer1 
      Interval        =   1000
      Left            =   4080
      Top             =   3240
   End
   Begin MSWinsockLib.Winsock sckWS 
      Index           =   0
      Left            =   4320
      Top             =   2520
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   393216
   End
   Begin VB.CommandButton Command2 
      Caption         =   "停止服务"
      Height          =   615
      Left            =   3960
      TabIndex        =   2
      Top             =   3840
      Width           =   1215
   End
   Begin VB.CommandButton Command1 
      Caption         =   "开始服务"
      Height          =   615
      Left            =   3960
      TabIndex        =   1
      Top             =   720
      Width           =   1215
   End
   Begin VB.ListBox List1 
      Height          =   4920
      Left            =   0
      TabIndex        =   0
      Top             =   0
      Width           =   3855
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'用户请求页面名
Private requestedPage As String

Private Sub Command1_Click()
load_defaults '开始服务
End Sub

Private Sub Command2_Click()
Call stop_server
End Sub

Private Sub Form_Load()
ttlConnections = 0
End Sub

Private Sub sckWS_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
      '总用户数加一
      ttlConnections = ttlConnections + 1
      '当前用户数加一
      numConnections = numConnections + 1
      '用户满
      If numConnections = maxConnections Then GoTo done
      '为这个用户新装载一个WINSOCK控件实例
      Load sckWS(ttlConnections)
      sckWS(ttlConnections).LocalPort = 0
      sckWS(ttlConnections).Accept requestID
      '加入日志
      List1.AddItem sckWS(ttlConnections).RemoteHostIP & " connected"
      
StartOver:
      
      DoEvents
      '如果还不知道用户请求哪个页面,则循环
      If requestedPage$ = "" Then GoTo StartOver
      List1.AddItem "requested page: " & requestedPage$
      '如果为"/",则将请求页面设为默认主页
      If requestedPage$ = "/" Then requestedPage$ = htmlIndexPage$
      '判断请求页面文件是否存在
      If FileExists(htmlPageDir & "\" & requestedPage$) Then
      '存在时的处理
      htmldata$ = text_read(htmlPageDir & "\" & requestedPage$)
      htmldata$ = ReplaceStr(htmldata$, "$ip", sckWS(0).LocalIP)
      sckWS(ttlConnections).SendData htmldata$ & vbCrLf
      Else 'if it doesn't exist, then...
       '文件不存在时的处理
       If requestedPage$ = htmlIndexPage$ Then
       sckWS(ttlConnections).SendData "<html><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b>Please create an index html page.  It was not found.</font></html>" & vbCrLf
       requestedPage$ = ""
       End If
    
      requestedPage$ = "/a"
      sckWS(ttlConnections).SendData html_404$ & vbCrLf '发送出错文件
      End If
   End If
   
done:
      numConnections = numConnections - 1
End Sub

Private Sub sckWS_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strdata As String
sckWS(Index).GetData strdata$
If Mid$(strdata$, 1, 3) = "GET" Then
findget = InStr(strdata$, "GET ")
spc2 = InStr(findget + 5, strdata$, " ")
pagetoget$ = Mid$(strdata$, findget + 4, spc2 - (findget + 4))
requestedPage$ = pagetoget$
End If
End Sub

Private Sub sckWS_SendComplete(Index As Integer)
If requestedPage$ <> "" Then
      requestedPage$ = ""
      sckWS(ttlConnections).Close
End If
End Sub

Private Sub Timer1_Timer()
StatusBar1.Panels(1).Text = "监听状态:" & sckWS(0).State
StatusBar1.Panels(2).Text = "当前用户数:" & numConnections
StatusBar1.Panels(3).Text = "用户总数:" & ttlConnections
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -