用Socket类构建网页下载器
2004-03-30 19:16
429 查看
用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 类允许您使用下面列出的任何一种协议执行异步和同步数据传输:
当您需要开发功能复杂的网络程序时,您可能要用到Socket类。
用Socket类取得网页源代码
先引入以下命名空间:
我原来用C#来练习本文代码,C#严格区分大小写,且智能感知的功能显然不如VB.Net,代码虽然简洁了,但一开始不太适应。我想,MicroSoft真正主推的或许是VB.Net,不然为何不在C#中实现同VB.Net一样的智能感知功能?最终还是用VB.Net来写本文代码。
初学者对Socket类的使用可能有点茫然,不要紧,先从简单的实例开始,实例调试成功,再去详细了解理论知识也不迟。
与我联系:
我的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#中的套接字编程
2004年3月5日
我的QQ: 26624998
我的网站:http://blog.csdn.net/2066/
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类取得网页源代码
先引入以下命名空间:
Imports System.Net Imports System.Net.Sockets Imports System.IO Imports System.Text Imports System.Text.Encoding |
初学者对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#中的套接字编程
2004年3月5日
我的QQ: 26624998
我的网站:http://blog.csdn.net/2066/
相关文章推荐
- IP地址的隐藏(delphi实现 )
- 转载:易水寒写的自由网,走向free的极限
- 一个画图类,类似ms_chart的线图,适用于科学仿真数据分析(二)
- 使用 .NET 框架将现有代码作为 Web 服务提供
- 移植到 Windows 2000 和 COM+
- 用VB和MTS开发多层数据库应用系统
- 《书评《自适应软件开发》(二)--.com时代的遗物
- 用ASP备份数据库
- TreeView学习笔记
- DOM心得
- Inside Java2 SDK Source Internal 深入Java2 SDK原始码(一) Java2 SDK原始码概观
- Java 2 Micro Edition简介(三)
- 用Socket发送电子邮件
- 调试利器-----------------------DebugTrace for Windows简介
- TCP/IP与ATM设计(二)
- 翻译Sun帮助文件——javax.wireless.messaging(MessageListener)
- 用VxD技术设计网络计费系统
- 文件上传的一点心得
- 电子商务赢利不是神话