好久没写代码了,工作、论文、考试……很多事还要做,希望尽快结束!
看到朋友blog里发了篇文章,就顺便学习了下,稍微注释了下代码(基本没动)。对于红色的两句,如果看代码仔细的话会不会想下为何是+3而不是+4呢^_
或许这问题有点幼稚,呵呵。我是自己在IDE中调试了下才知道
代码:
Option Explicit
Private Function RndNumber() '生成16位随机t。。
Randomize
RndNumber = Format$((Rnd * 0.99) + 0, "0.0000000000000000")
Debug.Print RndNumber
End FunctionPrivate Sub Picture1_Click()
'连接服务器
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.RemoteHost = "captcha.qq.com"
Winsock1.RemotePort = 80
Winsock1.Protocol = sckTCPProtocol
Winsock1.Connect
End SubPrivate Sub Winsock1_Connect()
Dim str$, RndN As Single
'组包并发送
RndN = RndNumber
str = "GET /getimage?aid=15000101&" & RndN & " HTTP/1.1" & vbCrLf
str = str & "Host: captcha.qq.com" & vbCrLf
str = str & vbCrLf
Winsock1.SendData str
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim BytData() As Byte, a&, b&, ii&, NewBytDate() As Byte
'接收并处理服务器返回的数据
Winsock1.GetData BytData, vbArray + vbByte, bytesTotal
On Error Resume Next
a = InStrB(BytData, ChrB(13) & ChrB(10) & ChrB(13) & ChrB(10))
b = UBound(BytData) - a - 3
ReDim NewBytDate(b)
For ii = 0 To b
NewBytDate(ii) = BytData(a + 3 + ii)
Next
Open App.Path & "\temp.jpg" For Binary As #1
Put 1, , NewBytDate
Close #1
Picture1.Picture = LoadPicture(App.Path & "\temp.jpg")
Kill App.Path & "\temp.jpg"
End SubPrivate Sub Winsock1_Close()
If Winsock1.State <> 0 Then Winsock1.Close
End Sub
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/671.html 欢迎订阅Eddy Blog。