想偷别人網站源碼啊,你這人不厚道,别人辛辛苦苦寫出的源碼,你怎麼說偷就偷了,那這網際網路不是不值錢了,偷!還是
能的,那就要看你有沒有哪個本事了,先學學技術吧,看你也是搞.net的,因為你還沒什麼成熟的技術,你進來了,我就看出
來了,呵呵,下面講叙如何用Socket類建構網頁下載下傳器:
用Socket類建構網頁下載下傳器
開發工具:Microsoft Visual Studio .NET 2003
作業系統:Windows XP
什麼時候用到Socket類
Microsoft.Net Framework為應用程式通路Internet提供了分層的、可擴充的以及受管轄的網絡服務,其名字空間System.Net和System.Net.Sockets包含豐富的類可以開發多種網絡應用程式。所謂“分層”,可以視為包含3個層次:請求/響應層、應用協定層、傳輸層。WebReqeust和WebResponse 代表了請求/響應層,支援Http、Tcp和Udp的類組成了應用協定層,而Socket類處于最底層——傳輸層。《用HttpWebRequest和正規表達式提取網頁中的連結》一文介紹了用請求/響應層來取得網頁源代碼。本文則用最底層的傳輸層來取得網頁源代碼。
為什麼要用Socket?或者什麼時候要用到Socket?
Socket 類為網絡通信提供了一套豐富的方法和屬性。 Socket 類允許您使用下面列出的任何一種協定執行異步和同步資料傳輸:
Ggp
網關到網關協定。
Icmp
網際消息控制協定。
Idp
IDP 協定。
Igmp 網際組管理協定。
IP 網際協定。
IPv6 網際協定 v6。
Ipx IPX 協定。
ND 網絡磁盤協定(非正式)。
Pup PUP 協定。
Raw 原始 UP 包協定。
Spx SPX 協定。
SpxII SPX 版本 2 協定。
Tcp 傳輸控制協定。
Udp 使用者資料文報協定。
Unknown 未知協定。
Unspecified 未指定的協定。
當您需要開發功能複雜的網絡程式時,您可能要用到Socket類。
用Socket類取得網頁源代碼
先引入以下命名空間:
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Text
Imports System.Text.Encoding
我原來用C#來練習本文代碼,C#嚴格區分大小寫,且智能感覺的功能顯然不如VB.Net,代碼雖然簡潔了,但一開始不太适應。我想,MicroSoft真正主推的或許是VB.Net,不然為何不在C#中實作同VB.Net一樣的智能感覺功能?最終還是用VB.Net來寫本文代碼。
初學者對Socket類的使用可能有點茫然,不要緊,先從簡單的執行個體開始,執行個體調試成功,再去詳細了解理論知識也不遲。
Private Sub btnHTML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHTML.Click
Dim serverIP As IPAddress = Dns.Resolve("http://sunhai.tianyablog.com").AddressList(0)
' Default Web Server Port = 80
Dim Port As String = "80"
Dim serverhost As New IPEndPoint(serverIP, Int32.Parse(Port))
Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Try
clientSocket.Connect(serverhost)
If clientSocket.Connected = False Then
MsgBox("Connect Error.", MsgBoxStyle.Critical, "HTTP")
Exit Sub
End If
Dim httpReq As String = "GET / HTTP/1.0" & ControlChars.CrLf & ControlChars.CrLf
clientSocket.Send(ASCII.GetBytes(httpReq))
Dim buffer(1024) As Byte
Dim byteCount As Int16 = clientSocket.Receive(buffer, buffer.Length, 0)
txtHTML.Text = ASCII.GetString(buffer, 0, byteCount)
Do While byteCount > 0
byteCount = clientSocket.Receive(buffer, buffer.Length, 0)
txtHTML.Text = txtHTML.Text & ASCII.GetString(buffer, 0, byteCount)
Loop
Catch ex As Exception
MsgBox(ex.StackTrace.ToString(), MsgBoxStyle.Critical, "Exception")
End Try
End Sub