作者: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 类允许您使用下面列出的任何一种协议执行异步和同步数据传输:
当您需要开发功能复杂的网络程序时,您可能要用到Socket类。
用Socket类取得网页源代码
先引入以下命名空间:
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/
本文地址:http://com.8s8s.com/it/it40888.htm