如何编写一个简单的HTTP代理服务器,最好提供VB源码

 我来答
oeiuv_00000
2008-06-06 · 超过22用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:93.4万
展开全部
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form Form1
ClientHeight = 3090
ClientLeft = 60
ClientTop = 450
ClientWidth = 4680
LinkTopic = "Form1"
ScaleHeight = 3090
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.ListBox List1
Height = 1500
Left = 120
TabIndex = 0
Top = 720
Width = 3615
End
Begin MSWinsockLib.Winsock SckGET
Index = 0
Left = 2520
Top = 360
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin MSWinsockLib.Winsock Winsock1
Left = 2040
Top = 360
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim PathName As String

Sub Begin()
'启动Winsock1,使用listen方法,听254端口
DoEvents
Winsock1.Close
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = 254

Winsock1.Listen
End Sub

Private Sub Form_Load()
'开始进行十个监听
For i = 1 To 9
Load SckGET(i)
SckGET(i).Close
SckGET(i).Protocol = sckTCPProtocol
Next

PathName = "E:\http\" '初始化目录
Begin
End Sub

Private Sub SckGET_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim DataReceived As String
Dim pos1 As Long, pos2 As Long
Dim QuestFile As String
Dim TData As Byte
pos1 = 0: pos2 = 0

SckGET(Index).GetData DataReceived, vbString
'处理报文
For i = 1 To Len(DataReceived)
If Mid(DataReceived, i, 1) = " " Then
If pos1 = 0 Then pos1 = i + 1 Else pos2 = i - 1: Exit For
End If
Next
'对请求的文件进行处理
On Error GoTo ExitThisSub
If pos1 <> 0 And pos2 <> 0 Then
QuestFile = Mid(DataReceived, pos1 + 1, pos2 - pos1) '得到主文件名
If QuestFile = "" Then QuestFile = "index.htm" '主页
QuestFile = PathName & QuestFile '得到路径
List1.AddItem SckGET(Index).LocalIP & " : GET " & QuestFile & " HTTP/1.1"
If Dir(QuestFile) = "" Then QuestFile = PathName & "404.htm" '未找到
End If

'开始发送文件信息
Open QuestFile For Binary As #1
SckGET(Index).SendData "HTTP/1.0 200 OK" + vbCrLf
SckGET(Index).SendData "MIME_version:1.0" + vbCrLf
SckGET(Index).SendData "Content_Length:" + CStr(LOF(1)) + vbCrLf
SckGET(Index).SendData "" + vbCrLf
Do While Not EOF(1)
Get #1, , TData
SckGET(Index).SendData TData
Loop

ExitThisSub:
Close #1
Begin
SckGET(Index).Close
SckGET(Index).LocalPort = 254
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Con:
For i = 0 To 9
If SckGET(i).State <> 7 Then SckGET(i).Accept requestID: Exit For '查找未用的SCK
If i = 9 And SckGET(9).State <> 7 Then Delay (1): GoTo Con '如果没有则继续等待
Next
End Sub

Sub Delay(Seconds&)
t& = Timer
Delay: DoEvents
If Timer < t + Seconds Then GoTo Delay
End Sub
广东轻亿云软件
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更... 点击进入详情页
本回答由广东轻亿云软件提供
摆渡踩踩
2008-06-12
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
好像是个简单的HTTP服务器,不是代理服务器啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式