分享
 
 
 

用Socket类构建网页下载器

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用Socket类构建网页下载器

作者:Tuenhai.com MSN: king#tuenhai.com

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://www.Tuenhai.com/

什么时候用到Socket类

Microsoft.Net Framework为应用程序访问Internet提供了分层的、可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序。所谓“分层”,可以视为包含3个层次:请求/响应层、应用协议层、传输层。WebReqeust和WebResponse 代表了请求/响应层,支持Http、Tcp和Udp的类组成了应用协议层,而Socket类处于最底层——传输层。《用HttpWebRequest和正则表达式提取网页中的链接》http://www.Tuenhai.com/一文介绍了用请求/响应层来取得网页源代码。本文则用最底层的传输层来取得网页源代码。

为什么要用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

tuenhai原来用C#来练习本文代码,C#严格区分大小写,且智能感知的功能显然不如VB.Net,代码虽然简洁了,但一开始不太适应。tuenhai想,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://www.Tuenhai.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

网络资源:

Windows Socket 网络编程——套接字编程原理

Visual C#托管Socket的实现方法

C#网络编程初探

Visual C#.Net 网络程序开发-Socket篇

浅析C#中的套接字编程

http://www.Tuenhai.com

2004年3月5日

Tuenhai简介:Tuenhai同学对儒释道医卜命相有一定研究,对网络及英语最感兴趣,于哲学最有心得.常人利已,圣人利他,我非圣人,取道中庸.希望与各位精英交流,MSN:king#tuenhai.com

我的网站: http://www.Tuenhai.com/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有