|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
用Socket类构建网页下载器 屠恩海(SunHai) 开发工具: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 与我联系: 我的QQ: 26624998 我的网站:http://sunhai.tianyablog.com 本文地址:http://www.csdn.net/Develop/read_article.asp?id=25281 网络资源: Windows Socket 网络编程――套接字编程原理 Visual C#托管Socket的实现方式 C#网络编程初探 Visual C#.Net 网络程序开发-Socket篇 浅析C#中的套接字编程 返回类别: 教程 上一教程: [GDI+] ColorMatrix 彩色矩阵 下一教程: CLR 调试接口的架构与应用 [2] 调试框架 您可以阅读与"用Socket类构建网页下载器"相关的教程: · 构造.NET环境下的网页下载器 (2) · 构造.NET环境下的网页下载器 (1) · 使用 Visual C# .NET 在 ADO.NET 中以编程方法构建连接字符串 · .net中xmlhttp下载文件的方式参考 · ASP.NET2.0+SQL Server2005构建多层应用 |
| 快精灵印艺坊 版权所有 |
首页 |
||