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 clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Try If clientSocket.Connected = False Then Dim httpReq As String = "GET / HTTP/1.0" & ControlChars.CrLf & ControlChars.CrLf clientSocket.Send(ASCII.GetBytes(httpReq)) Dim buffer(1024) As Byte txtHTML.Text = ASCII.GetString(buffer, 0, byteCount) Do While byteCount > 0 |
与我联系:
我的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/