16,555
社区成员
发帖
与我相关
我的任务
分享
Private Function Gettest(ByVal strIpAdd As String, ByVal iPort As Integer) As Socket
Dim hostadd As IPAddress = Dns.Resolve(strIpAdd).AddressList(0)
Dim EPhost As New IPEndPoint(hostadd, iPort)
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
s.Connect(EPhost)
Return s
End Function
Function SocketRead(ByVal request As String, ByVal s As Socket) As String
Dim ascii As Encoding = Encoding.UTF8
Dim bytesSent As [Byte]() = ascii.GetBytes(request)
Dim bytes As Int32
Dim page As [String] = ""
Dim bytesReceived(255) As [Byte]
s.Send(bytesSent)
Do
System.Array.Clear(bytesReceived, 0, bytesReceived.Length)
bytes = s.Receive(bytesReceived)
page = page + Encoding.UTF8.GetString(bytesReceived, 0, bytes)
Application.DoEvents()
Loop While s.Available > 0
Return page
End Function
Function test()
Dim regStr, constr, headget As String
Dim head As [String]
Dim chr As String = ControlChars.Cr + ControlChars.Lf
Dim host As String = "www.verycd.com"
Dim sb As Socket = Gettest("www.verycd.com", "80")
headget = "GET {0} HTTP/1.1" + chr & _
"Host: www.verycd.com" + chr & _
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" + chr & _
"Accept:application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + chr & _
"Accept-Language:zh-cn,zh;q=0.5" + chr & _
"Accept-Encoding:gzip,deflate" + chr & _
"Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7" + chr & _
"Keep-Alive: 300" + chr & _
"Connection: keep-alive" + chr & _
"Cookie: XXXXX" + chr & _
chr
head = String.Format(headget, "www.verycd.com")
constr = SocketRead(head, sb)
TextBox1.Text = "setp1:" + constr + chr
head = String.Format(headget, "www.verycd.com")
constr = SocketRead(head, sb)
TextBox1.Text += "setp2:" + constr + chr
End Function
Function SocketRead(ByVal url As String, ByVal con As Socket) As String
Dim ascii As Encoding = Encoding.ASCII
Dim request As String = url
Dim bytesSent As [Byte]() = ascii.GetBytes(request)
Dim bytesReceived(255) As [Byte]
Dim s As Socket = con
If s Is Nothing Then
Return "Connection failed"
End If
s.Send(bytesSent)
Dim bytes As Int32
Dim page As [String] = ""
bytes = s.Receive(bytesReceived)
page = Encoding.Unicode.UTF8.GetString(bytesReceived)
While s.Available > 0
System.Array.Clear(bytesReceived, 0, bytesReceived.Length)
bytes = s.Receive(bytesReceived)
page = page + Encoding.Unicode.UTF8.GetString(bytesReceived)
'根据VB6的经验,这样的情况是不是应该加上DoEvents()呢???
Application.DoEvents();
End While
Return page
End Function