用VB制作简易的代理服务器代码

原创 2006年05月24日 19:02:00
  •  
  • Private Sub Form_Load()
    Winsock1(0).Listen
    For i = 1 To 255
    Load Winsock1(i)
    Load Winsock2(i)
    Winsock1(i).Close
    Next
    End Sub
  •  
  • Private Sub Form_Unload(Cancel As Integer)
    Winsock1(0).Close
    Unload Me
    End Sub
  •  
  • Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    For i = 1 To 255
    If Winsock1(i).State = sckClosed Then
    Winsock1(i).Accept requestID
    Exit For
    End If
    Next
    End Sub
  •  
  • Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    'On Error GoTo OnError
    Dim Dat As String
    Winsock1(Index).GetData Dat
    Dim ProxyTmp
    Dim ProxyFile() As Byte
    ProxyTmp = Split(Dat, " ")
    Dim UrlTemp
    Dim UrlW As String
    UrlTemp = Split(ProxyTmp(1), "/")
    i = 0
  • UrlW = UrlTemp(2)
    Winsock2(Index).Close
    Winsock2(Index).Protocol = sckTCPProtocol
    List1.AddItem "User:" + Trim(Winsock1(Index).RemoteHostIP)
    List1.AddItem "正在连接" + UrlW + "中····"
    List1.AddItem "连接到" + ProxyTmp(1)
    List1.AddItem "完成"
    Winsock2(Index).RemoteHost = UrlW
    Winsock2(Index).RemotePort = 80
    Winsock2(Index).Connect
    Dim Times As Long
    Times = GetTickCount
  • Do Until Form1.Winsock2(Index).State = sckConnected
    DoEvents
    Loop
  • Winsock2(Index).SendData Dat
    Exit Sub
    OnError:
    Winsock1(Index).SendData "<font color='red'>对不起,您所想要访问的站点暂时无法访问或者访问超时,请联系管理员!</font>"
    End Sub
  •  
  • Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    Winsock1(Index).Close
    Winsock1(0).Close
    Winsock1(0).Listen
    End Sub
  •  
  • Private Sub Winsock1_SendComplete(Index As Integer)
    Winsock1(Index).Close
    Winsock1(0).Close
    Winsock1(0).Listen
  • End Sub
  •  
  •  
  • Private Sub Winsock2_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  • Winsock2(Index).Accept requestID
  • End Sub
  • Private Sub Winsock2_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    On Error Resume Next
    Dim Dat() As Byte
    Dim nc As Integer
    nc = 0

  • Winsock2(Index).GetData Dat
    Do Until Winsock1(Index).State = sckConnected
     
    Loop
    Winsock1(Index).SendData Dat
    'SendDat Dat, Index
  • Winsock2(Index).PeekData Dat

  • Debug.Print Dat

  • End Sub

  • Private Sub Winsock2_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    Winsock2(Index).Close
    End Sub
  • Sub SendDat(Dt() As Byte, i As Integer)
    Dim TmpDt() As Byte
    Do While Winsock1(i).State = sckConnected
  • x = x + 1
    Loop
    If UBound(Dt) < 100000 Then
    Winsock1(i).SendData Dt
     DoEvents
  • Else
    For i = 0 To UBound(Dt) / 100000
    For j = 0 To 99999
     ReDim Preserve TmpDt(j)
      TmpDt(j) = Dt(i * 100000 + j)
     Next
      Winsock1(i).SendData TmpDt
      DoEvents
      Next
      TmpDt() = ""
    For j = 0 To UBound(Dt) Mod 100000
      
      ReDim Preserve TmpDt(j)
      TmpDt(j) = Dt((i + 1) * 100000 + j)
      Next
      Winsock1(i).SendData TmpDt
       DoEvents
  • End If
  • End Sub
    这个服务器本身不完善,耗内存不匪.不过重在说明基本原理.希望哪位能够改进一下,还请能发于我一份.
  • 我的E-MAIL:fantasynoisy@yahoo.com.cn
  • 我的QQ:373277012
  • 请老手们多指教.新手敬上.

用VB6.0编写自我升级的程序(二)

  二、 projNewMain.vbp工程:    说明:这个是新的主程序,即升级后的主程序,由于我目前没有服务器,故将该程序放在projUpdate.vbp工程的资源文件中。在projUpdate...
  • cncco
  • cncco
  • 2006年05月14日 06:07
  • 1183

VB6实现简单的扫雷小游戏

VB实现简单的扫雷小游戏扫雷这个小游戏可谓是简单又好玩,百万不腻,不知道有没有小伙伴跟博主一样脑热的曾经扫过一整个屏幕的雷。。。今天呢,博主在这里总结一下自己做扫雷小游戏的主要过程以及主要思路,当然实...
  • wf824284257
  • wf824284257
  • 2016年11月24日 13:26
  • 4933

VB6简单的记事本程序,高手见笑了!

      最近自己写了一个简单的记事本程序,自己第一次完整写的程序.程序中有很多Bug,程序代码沉余很大.写了很多重复的代码. 但是基本的记事本功能实现了.准备重新更新代码,希望至少在代码结构上能有...
  • xgd_csdh
  • xgd_csdh
  • 2006年11月17日 23:23
  • 966

VB实现简单的图形区域选择

程序效果:当点击左边的部件图时,会弹出对话框提示你点击了哪一个区域。程序思路:用一个图片区域码图作为点击区域的参照,根据XY取得的颜色识别出属于哪一个区域程序界面如下:相关代码如下:Visual Ba...
  • supermanking
  • supermanking
  • 2010年04月28日 11:12
  • 3207

VB编写病毒

Private n盘 Private n路径1$ Private n路径2$ Private Sub Command1_Click() End End Sub Private Sub Form_Loa...
  • kzh4435
  • kzh4435
  • 2007年09月30日 13:35
  • 536

用vb制作简单的播放器

看了这篇文章的标题,你是不是想拥有一个自己制作的播放器呢?那就继续向下看吧。       1、因为我们需要使用到MediaPlayer控件,所以刚开始就要右击工具面板并在部件添加窗口里选择“Wind...
  • renmengmeng520
  • renmengmeng520
  • 2016年03月22日 20:33
  • 2495

Android通过AlarmManager类实现最简单的闹钟

Android通过AlarmManager类实现闹钟简介   闹钟是生活中最常用的功能了,很多App都可以加入该功能,提醒用户某个时刻要做的事情。在Android系统中可以通过AlarmManag...
  • qq_19388451
  • qq_19388451
  • 2016年09月26日 14:08
  • 276

arduino简易电子琴

Arduino 电子琴 本次实验的原理主要是将电平输出转化为相应的频率从而使无源音响发出不同的声音。最简单的方法是直接将一首曲目的电平用程序传给单片机执行。为了创造出“电子琴”,只需要把相应的音阶变...
  • qq_40724865
  • qq_40724865
  • 2018年01月01日 23:29
  • 160

我的记事本(vb编写的)

源代码:http://download1.csdn.net/down3/20070606/06124205473.rar成品: http://download1.csdn.net/down3/2007...
  • foamflower
  • foamflower
  • 2007年06月06日 12:47
  • 964

二、php制作简易的计算器

步骤: 1、写出两个文本框,中间用一个下拉菜单select作为计算按钮; 2、用$_SET("")或$_GET("")方式获取两个文本框的数据及按钮信息进行运算; 3、在输出结果的过程中,保证两...
  • HRaymon
  • HRaymon
  • 2015年01月10日 23:02
  • 1976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用VB制作简易的代理服务器代码
举报原因:
原因补充:

(最多只允许输入30个字)