<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_scorpion</title><subtitle type="text">.net爱好者的学习汇集</subtitle><id>http://feed.cnblogs.com/blog/u/9821/rss</id><updated>2011-05-26T12:39:28Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/9821/rss"/><entry><id>http://www.cnblogs.com/dagon007/archive/2011/05/26/2059175.html</id><title type="text">bat 切换单位和宿舍IP地址（转）</title><summary type="text">近日由于单位和宿舍的ip地址老是更换，考虑到方便就上网查找了下bat更换ip的方法。结果找到了这篇文章，转载到这里，方便下应用。原文是csdn的，网址如下：http://blog.csdn.net/fanston/archive/2010/05/30/5634386.aspx，其中还找到了一篇用vs2005开发的切换网络的程序，但是经测试，效果不如bat,下次研究下放上来。1、ip bat修改理论探讨 前两天我突然萌生了一个念头：能不能做一个小程序来实现自动配置或修改IP和mac，达到一键搞定的目的，这样尤其适合那些带着笔记本到处跑的商务人员，于是我首先想到了bat处理。 查阅资料后发现修改i</summary><published>2011-05-26T12:39:00Z</published><updated>2011-05-26T12:39:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2011/05/26/2059175.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2011/05/26/2059175.html"/><content type="html">&lt;p&gt;近日由于单位和宿舍的ip地址老是更换，考虑到方便就上网查找了下bat更换ip的方法。结果找到了这篇文章，转载到这里，方便下应用。&lt;/p&gt;&#xD;
&lt;p&gt;原文是csdn的，网址如下：&lt;a href="http://blog.csdn.net/fanston/archive/2010/05/30/5634386.aspx"&gt;http://blog.csdn.net/fanston/archive/2010/05/30/5634386.aspx&lt;/a&gt;，其中还找到了一篇用vs2005开发的&lt;/p&gt;&#xD;
&lt;p&gt;切换网络的程序，但是经测试，效果不如bat,下次研究下放上来。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;1、ip bat修改理论探讨&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;前两天我突然萌生了一个念头：能不能做一个小程序来实现自动配置或修改IP和mac，达到一键搞定的目的，这样尤其适合那些带着笔记本到处跑的商务人员，于是我首先想到了bat处理。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查阅资料后发现修改iP有现成的命令，但是修改mac相对麻烦一些，需要智能地修改注册表。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;修改ip命令如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;netsh interface ip&amp;nbsp;set address name="本地连接" source=static addr=202.200.155.129 mask=255.255.255.0&lt;br /&gt;netsh interface ip set address name="本地连接" gateway=202.200.155.254 gwmetric=1&lt;br /&gt;netsh interface ip set dns name="本地连接" source=static addr=202.200.144.2 register=PRIMARY&lt;br /&gt;netsh interface ip add dns name="本地连接" addr=61.163.1.4 index=2&lt;br /&gt;netsh interface ip set wins name="本地连接" source=static addr=none&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;将以上代码相关ip配置修改为你自己的配置，保存到记事本文件，后缀名改为bat，运行即可。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;注意：本地连接&amp;rdquo;必须与你的本地连接名称相同，gwmetric=1必须有，否则有语法错误。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;自动获取IP命令如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;netsh interface ip set address name="本地连接" source=dhcp&lt;br /&gt;netsh interface ip set dns name="本地连接" source=dhcp&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;同样保存为bat文件，即可运行设置。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然而，以上方法还不够完美，当不同用户使用这段代码时，用户需要亲自修改这些代码来配置自己的IP，所以我们考虑：能不能把IP的相关配置保存的一个文件里边，然后由bat代码解释执行呢？这样的话，用户只需要修改ip配置文件，bat程序文件便可自动解释执行。答案是肯定的，我们可以这样实现：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 运行windows cmd命令，输入下命令即可将你现在的IP配置保存到文件里边：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;netsh -c interface dump &amp;gt; c:\myipconfig\ip1.txt&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;改命令自动将你现有的ip配置保存到 c:\myipconfig\ip1.txt，此时你可以打开查看其。注意：&amp;lsquo;&amp;gt;&amp;rsquo;为输入文件符号&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后，我们可以通过命令：netsh -f c:\myipconfig\ip1.txt 将ip1.txt保存的ip配置设置到本机。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;2、mac bat 修改理论探讨&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt; 到目前为止，有很多人坚信mac地址不可能被修改，他们认为mac是全球唯一的地址，修改了岂不是乱套了吗？而且硬件厂商也不容许你修改的，这里我要做出解释：在windows平台上，所谓的mac地址在通信时某台机子的mac地址是多少是由windows说了算的，windows在通信时是在在注册表里边查找本机的mac地址的。所以我们所谓的修改mac地址也只是在注册表中修改，没有对网卡进行实际的修改，当你将mac设置为disable的时候，mac就自动回到了网卡的mac了。顺便说一句，我们为什么要修改mac呢？是因为有些上网账号和mac绑定到了一起，在该账号下只认初始化的那个mac。另外，再说一个奇怪的现象，在同一个集线器\交换机下，将所有机器IP地址，mac修改成一样，照样可以上网，我不清楚这是windows的一个bug，还是它的一个功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 言归正传，我们如何做bat能够在注册表中修改mac呢？通过网上查阅资料其理论方法如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;Windows2000/XP 的修改&lt;br /&gt;&amp;nbsp;1)在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000 、 0001 、 0002 等主键下，查找 DriverDesc ，内容为你要修改的网卡的描述，如&amp;ldquo; Realtek RTL8029(AS)-based PCI Ethernet Adapter &amp;rdquo;。&lt;br /&gt;&amp;nbsp;2)如果在0001下找到了1中的DriverDesc ,在其下，添加一个字符串，命名为 NetworkAddress ，其值设为你要的 MAC 地址（注意地址还是连续写）。如： 00E0DDE0E0E0 。 &lt;br /&gt;&amp;nbsp;3)然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键，在该主键下添加名为 default 的字符串，其值是你要设的 MAC 地址，要连续写，如： 000000000000 。（实际上这只是设置在后面提到的高级属性中的&amp;ldquo;初始值&amp;rdquo;，实际使用的 MAC 地址还是取决于在第 2 点中提到的 NetworkAddress 参数，这个参数一旦设置后，以后高级属性中的值就是 NetworkAddress 给出的值而非 default 给出的了。）&lt;br /&gt;&amp;nbsp;4)在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串，其作用为指定 NetworkAddress 主键的描述，其值可自己命名，如&amp;ldquo; Network Address &amp;rdquo;，这样在网卡的高级属性中就会出现 Network Address 选项，就是你刚在注册表中加的新项 NetworkAddress ，以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串，其值设为&amp;ldquo; 1 &amp;rdquo;，则以后当你在网卡的高级属性中选择 Network Address 项时，右边会出现&amp;ldquo;不存在&amp;rdquo;选项。 &lt;br /&gt;&amp;nbsp;5)重新启动你的计算机，打开网络邻居的属性，双击相应网卡项会发现有一个 Network Address 的高级设置项，可以用来直接修改 MAC 地址或恢复原来的地址(选中不存在)。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;根据这个方法，我们可以做一个.reg文件或者.bat文件来操作注册表，但是这样相对麻烦一些。这里我们使用第三方软件smac 1.0,注意：只能用1.0，其他高级版本不支持命令行参数，也就不能做bat文件了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;将smac.exe下载下来，copy到你的某个目录如:c:\myipconfig &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: small;"&gt;然后我们利用命令 smac -ModifyMAC 0 000D45748512&amp;nbsp;&amp;nbsp; 其中0代表第0张网卡&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;3、一键修改IP及mac bat实现&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;根据以上理论，我们便可实现了&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）利用命令netsh -c interface dump &amp;gt; c:\myipconfig\ip1.txt将ip配置格式文件保存到ip1.txt中，打开ip1.txt修改相关配置信息为你的目标配置信息。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）手动将目标mac信息保存到mac.txt中&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) 在本目录下新建记事本保存如下命令到bat中即可：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @echo off&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 实验室IP配置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo fanston(fzd)制作，减轻你在实验室到宿舍频繁修改ip苦恼&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 提示：请确保您的网卡名称为"本地连接"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pause&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 正在设置ip dns ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; netsh -f ip1.txt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo IP dns设置完毕!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 正在设置mac&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for /f "delims=" %%i in ('find "0" "mac.txt"')do set gmac=%%i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; smac -ModifyMAC 0 %gmac%&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo mac设置完毕!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo 配置完毕!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 有时需要禁用，并启用一下本地连接才可生效(一般情况不需要)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pause&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当ip发生变化时，用户直接从ip1.txt和mac.txt 中配置相关信息即可，实现了代码无关性。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/2059175.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2011/05/26/2059175.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2011/05/06/2038919.html</id><title type="text">(转)C#2Android</title><summary type="text">偶然发现了博客园里的一篇文章，c#和android的差别，原文在这里http://www.cnblogs.com/cangfriend/archive/2011/04/27/2031036.html特别转来这里看看在桌面开发中，窗体界面是最重要的开发方向之一。用户接触的都是人机交互窗体界面。在Android的开发中，窗体界面当然也是最主要的开发方向之一。而Android的窗体和桌面窗体开发有很大的区别。.Net中的C#是现在最流行的编程语言之一，现在主要介绍Android窗体和C#WinForm开发的异同。1&amp;gt;C# WiFormC#中 WinForm主要有两部分组成，1是窗体文件，2是代</summary><published>2011-05-06T06:27:00Z</published><updated>2011-05-06T06:27:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2011/05/06/2038919.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2011/05/06/2038919.html"/><content type="html">&lt;p&gt;偶然发现了博客园里的一篇文章，c#和android的差别，原文在这里&lt;a href="http://www.cnblogs.com/cangfriend/archive/2011/04/27/2031036.html"&gt;http://www.cnblogs.com/cangfriend/archive/2011/04/27/2031036.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;特别转来这里看看&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div id="cnblogs_post_body"&gt;&#xD;
&lt;p&gt;在桌面开发中，窗体界面是最重要的开发方向之一。用户接触的都是人机交互窗体界面。在Android的开发中，窗体界面当然也是最主要的开发方向之一。而Android的窗体和桌面窗体开发有很大的区别。.Net中的C#是现在最流行的编程语言之一，现在主要介绍Android窗体和C#WinForm开发的异同。&lt;/p&gt;&#xD;
&lt;p&gt;1&amp;gt;C# WiForm&lt;/p&gt;&#xD;
&lt;p&gt;C#中 WinForm主要有两部分组成，1是窗体文件，2是代码文件。在窗体问中主要是存储的窗体中各个成员的默认属性，例如大小，颜色，位置等，在代码文件中当然存储的是各个成员的处理事件，方法等。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271957512190.jpg"&gt;&lt;img title="clip_image002" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="244" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958169299.jpg" width="205" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958173071.jpg"&gt;&lt;img title="clip_image004" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="244" alt="clip_image004" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958186560.jpg" width="204" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958203820.jpg"&gt;&lt;img title="clip_image006" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="142" alt="clip_image006" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958218738.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面的C#Winform &amp;#8220;Form1&amp;#8221;, 就是一个名为&amp;#8221;Form1&amp;#8221;的Form类的子类，类文件被分为两个部分，分别是 &amp;#8220;Form1.cs&amp;#8221;中的&amp;#8221;public partial class Form1 : Form &amp;#8230;.&amp;#8221; 和 &amp;#8220;Form1.Designer.cs&amp;#8221;中的&amp;#8221;partial class Form1 &amp;#8230;&amp;#8230;&amp;#8221;,这两部分和在一块，才是一个完成的C#WinForm类。&lt;/p&gt;&#xD;
&lt;p&gt;2&amp;gt; Android 窗体的组成。&lt;/p&gt;&#xD;
&lt;p&gt;在Android开发中，它的窗体也是有2部分组成，不过和C#不同的是，它的窗体是完全独立的两个部分，分别是一个 Activity的子类，和xml文件(叫做LayOut布局文件)。Activity存储的就是这个窗体各个成员的处理事件，方法等，对应C#中的Form1.cs，XML文件存储的就是窗体中各个成员的布局，默认属性等，对应C#中的Form1.Design。因为是完全独立的两个部分，他们的名字当然是可以完全不相关的命名方式。&lt;/p&gt;&#xD;
&lt;p&gt;在C#中Form1就是一个窗体的组合，直接调用就可以啦。&lt;/p&gt;&#xD;
&lt;p&gt;Android中就不能这样。一个窗体的组合，必须是Activity + xml 才算完整。在Activity中有onCreate()方法，在里面指定一个xml文件，在算组成了一个完整的窗体。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958233523.jpg"&gt;&lt;img title="clip_image008" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="57" alt="clip_image008" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958248931.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(Activity中的onCreate方法)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958272604.jpg"&gt;&lt;img title="clip_image010" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="145" alt="clip_image010" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958293768.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(main布局文件的界面)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958319110.jpg"&gt;&lt;img title="clip_image012" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="124" alt="clip_image012" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958325597.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(main布局文件的代码)&lt;/p&gt;&#xD;
&lt;p&gt;就是把当前的Activity和&amp;#8221;main&amp;#8221;layout布局文件组合起来，组成了一个完整的窗体。就是在main布局文件中设定好各个成员控件的位置，属性等，在当前的Activity就可以处理他们的事件方法等。&lt;/p&gt;&#xD;
&lt;p&gt;3&amp;gt;主界面(或程序默认的第一个界面)&lt;/p&gt;&#xD;
&lt;p&gt;在C#开发中，Program.cs中指定了当前程序的主界面。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/20110427195834764.jpg"&gt;&lt;img title="clip_image014" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="159" alt="clip_image014" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958354744.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Andorid开发中，存在一个AndroidManifest.xml文件，其中包含所有的&amp;#8221;activity&amp;#8221;类(相当于C#中的窗体类)的列表，其中主界面的要包含&amp;lt;intent-filter&amp;gt;成员。把要作为主界面的&amp;#8221;activity&amp;#8221;中加入&amp;lt;intent-filter&amp;gt;成员设置就可以啦，等同于C#的Program.cs中的&amp;#8221;Application.Run(主界面窗体)&amp;#8221;。如下图显示&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958397728.jpg"&gt;&lt;img title="clip_image016" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="104" alt="clip_image016" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958404281.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3&amp;gt;多窗体&lt;/p&gt;&#xD;
&lt;p&gt;在C#中，如果一个程序包含多个窗体，不用什么特殊的设置，只要多创建一个From类就可以啦。&lt;/p&gt;&#xD;
&lt;p&gt;在Andorid中，也是多创建几个Activity类，不过要在AndroidManifest.xml中吧所有要显示的Activity都要列出来，否则要报错。如下图所示&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958459543.jpg"&gt;&lt;img title="clip_image018" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="104" alt="clip_image018" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958483423.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4&amp;gt;跳转到另一个窗体。&lt;/p&gt;&#xD;
&lt;p&gt;在C#中要跳转的另一个窗体的代码非常简单，就是新建一个窗体，并显示就可以啦。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958499420.jpg"&gt;&lt;img title="clip_image020" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="51" alt="clip_image020" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958495210.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Andorid中要稍微麻烦一些，要用到&amp;#8221;Intent&amp;#8221;的用法(包含的按钮单击事件到下章再介绍)，如下&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958508699.jpg"&gt;&lt;img title="clip_image022" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="48" alt="clip_image022" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958512536.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;myHello.this就是当前的窗体，OtherActivity.class就表示要跳转到的窗体。&lt;/p&gt;&#xD;
&lt;p&gt;5&amp;gt;跳转窗体时的传参&lt;/p&gt;&#xD;
&lt;p&gt;在C#中传参可以用属性的方式传参(本教程就不多讲C#的一些写法啦，只举例其中一种)，并在跳转时调用，参数的类型只要是C#支持的类型就可以。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958522961.jpg"&gt;&lt;img title="clip_image024" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="235" alt="clip_image024" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958539274.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271958547223.jpg"&gt;&lt;img title="clip_image026" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="225" alt="clip_image026" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/20110427195855646.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Android中，传参方式如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271959173318.jpg"&gt;&lt;img title="clip_image028" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="70" alt="clip_image028" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271959197613.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面的代码中共有3个参数 1。&amp;#8221;textintent&amp;#8221;, 值是&amp;#8221;123456&amp;#8221;,2。&amp;#8221;one&amp;#8221;，值是一个变量&amp;#8221;factorOneStr&amp;#8221;,3。&amp;#8221;two&amp;#8221;，值是一个变量&amp;#8221;factorTwoStr&amp;#8221;.&lt;/p&gt;&#xD;
&lt;p&gt;6&amp;gt;窗体传参时的接收&lt;/p&gt;&#xD;
&lt;p&gt;在C#中也很简单，直接调用就可以啦。代码示例如下:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271959206990.jpg"&gt;&lt;img title="clip_image030" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; margin: 0px; padding-top: 0px; border-right-width: 0px" height="38" alt="clip_image030" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271959203021.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Andorid中，先要提取，才能调用。代码示例如下:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/201104271959444382.jpg"&gt;&lt;img title="clip_image032" style="border-top-width: 0px; padding-right: 0px; display: inline; padding-left: 0px; border-left-width: 0px;background-image: none; border-bottom-width: 0px; padding-top: 0px; border-right-width: 0px" height="112" alt="clip_image032" src="http://images.cnblogs.com/cnblogs_com/cangfriend/201104/20110427195946869.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/2038919.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2011/05/06/2038919.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2010/11/29/1890801.html</id><title type="text">[转]HTTP调试工具：Fiddler的使用方法介绍</title><summary type="text">Fiddler可以帮您记录，调试Microsoft Internet Explorer与Web应用程序的交互，找到Web程序运行性能的瓶颈，还有如查看向Web服务器发送cookies的内容，下载内容的大小等功能。 说多一点是，Fiddler站在用户与Web服务器的中间，由它转发请求与响应，因此Fiddler作为一个可检视，可定制的工具，能让您了解交互过程细节，有利于解决Web程序的交互问题。如下列...</summary><published>2010-11-29T02:12:00Z</published><updated>2010-11-29T02:12:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2010/11/29/1890801.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2010/11/29/1890801.html"/><content type="html">&lt;div  id="blog_text"&gt;Fiddler可以帮您记录，调试Microsoft Internet Explorer与Web应用程序的交互，找到Web程序运行性能的瓶颈，还有如查看向Web服务器发送cookies的内容，下载内容的大小等功能。 &lt;br /&gt;&lt;br /&gt;说多一点是，Fiddler站在用户与Web服务器的中间，由它转发请求与响应，因此Fiddler作为一个可检视，可定制的工具，能让您了解交互过程细节，有利于解决Web程序的交互问题。如下列示意图： &lt;br /&gt;&lt;br /&gt;Internet Explorer &amp;lt;-&amp;gt; WinINET? (由Fiddler运行时自动注册) &amp;lt;-&amp;gt; Fiddler &amp;lt;-&amp;gt; Web Server &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fiddler可以用于：&lt;/strong&gt; &lt;br /&gt;性能测试。如查看页面的大小 &lt;br /&gt;调试。在会话选项中，可暂停，编辑HTTP通讯 &lt;br /&gt;Fiddler不仅可用于Microsoft Internet Explorer，其它浏览器，如Mozilla Firefox，Opera等也适用。软件界面友好，精于HTTP，可能比NetMon易用，还可用.NET进行扩展。官方站点上，还有视频教学。 &lt;br /&gt;&lt;br /&gt;这个工具我已经使用比较长时间了，对我的帮助也挺大，今天我翻译的微软的文章，让更多的朋友都来了解这个不错的工具，也是我第一次翻译文章，不恰当之处请大家大家多多指正。&lt;br /&gt;介绍： &lt;br /&gt;&lt;font style="font-size: 12pt"&gt;你是不是曾经疑惑过你的web程序和IE是如何交互的？你是不是遇到过一些奇怪的而你又无法解决的性能瓶颈？你是不是对那些发送给服务器端的cookie 和那些你下载下来的被标记为可缓存的内容感到好奇？&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Fiddler官方网站及下载地址：&lt;a href="http://www.fiddlertool.com/Fiddler/dev/" target="_blank"&gt;&lt;font color="#0000ff"&gt;http://www.fiddlertool.com/Fiddler/dev/&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;微 软的Fiddler能够帮助你回答以上的问题，不但如此，它还是一个http调试代理，它能 够记录所有的你电脑和互联网之间的http通讯，Fiddler 可以也可以让你检查所有的http通讯，设置断点，以及Fiddle 所有的&amp;#8220;进出&amp;#8221;的数据（指cookie,html,js,css等文件，这些都可以让你胡乱修改的意思）。 Fiddler 要比其他的网络调试器要更加简单，因为它仅仅暴露http通讯还有提供一个用户友好的格式。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Fiddler 包含一个简单却功能强大的基于JScript .NET 事件脚本子系统，他非常灵活性非常棒，可以支持众多的http调试&lt;span style="padding-right: 0pt; display: inline; padding-left: 0pt; float: none; padding-bottom: 0pt; cursor: pointer; color: blue; padding-top: 0pt; border-bottom: 1px dashed; text-decoration: underline"&gt;任务&lt;/span&gt;。Fiddler 是用C#写出来的。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;。。。。。接下来是一大段废话，关于如何安装的，只要一路next，就可以了。这段话我就跳过，直接切入正题了。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Running Fiddler&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;当你启动了Fiddler，程序将会把自己作为一个微软互联网服务的系统代理中去。你可以通过检查代理设置对话框来验证Fiddler是被正确地截取了web请求。操作是这样的：点击IE设置，工具，局域网设置，最后点击高级。&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig01.gif" border="0"  alt="" /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;作为系统代理，所有的来自微软互联网服务（WinInet）的http请求再到达目标Web服务器的之前都会经过Fiddle，同样的，所有的Http响应都会在返回客户端之前流经Fiddler。这样，就能明白Fiddler很多作用了吧！&lt;br /&gt;&lt;img height="156" src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig02.gif" width="408" border="0"  alt="" /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;当你关闭Fiddler的时候，它就会自动从系统注册表中移出，换句话说，当你关闭了Fiddler后，不会占着茅坑不拉屎。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;下面，是一个Fillder的用户界面，大家可以参考参考其功能。&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig03.gif" border="0"  alt="" /&gt;&lt;/font&gt;&lt;br /&gt;用Fiddler来做性能测试 HTTP&lt;span&gt;&lt;a style="cursor: pointer; color: rgb(0,0,204); text-decoration: underline" target="_blank" name="a_s_p_x_1"&gt;统计&lt;/a&gt;&lt;/span&gt;视图&lt;font style="font-size: 12pt"&gt;通 过显示所有的Http通讯，Fiddler可以轻松的演示哪些用来生成一个页面，通过统计页 面（就是Fiddler左边的那个大框）用户可以很轻松的使用多选，来得到一个WEB页面的&amp;#8220;总重量&amp;#8221;（页面文件以及相关js,css等）你也可以很轻松 得看到你请求的某个页面，总共请求了多少次，以及多少字节被转化了。&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;img height="195" src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig04.gif" width="416" border="0"  alt="" /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;另外，通过暴露HTTP头，用户可以看见哪些页面被允许在客户端或者是代理端进行缓存。如果要是一个响应没有包含Cache-Control 头，那么他就不会被缓存在客户端。&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;img height="74" src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig05.gif" width="314" border="0"  alt="" /&gt;&lt;br /&gt;&lt;br /&gt;用Fiddler来调试 &lt;br /&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Fiddler支持断点调试概念，当你在软件的菜单&amp;#8212;rules&amp;#8212;automatic breakpoints选项&lt;span style="padding-right: 0pt; display: inline; padding-left: 0pt; float: none; padding-bottom: 0pt; cursor: pointer; color: blue; padding-top: 0pt; border-bottom: 1px dashed; text-decoration: underline"&gt;选择&lt;/span&gt;beforerequest,或者当这些请求或响应属性能够跟目标的标准相匹配，Fiddler就能够暂停Http通讯， 情切允许修改请求和响应。这种功能对于安全测试是非常有用的，当然也可以用来做一般的功能测试，因为所有的代码路径都可以用来演习。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;img height="486" src="http://images.cnblogs.com/cnblogs_com/framework/ie_introfiddler_fig06.gif" width="412" border="0"  alt="" /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;Session检查&lt;font style="font-size: 12pt"&gt;用 户可以在BuilderPage项种来以手工的方式来创建一个HTTP请求（即在 Fiddler右侧的tab的第三个，RequestBUILDER），或者可以使用拖拽操作从Session列表中来移动一个已经存在的请求到 builder page 来再次执行这个请求。。。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;Fiddler 扩展&lt;font style="font-size: 12pt"&gt;Fiddler可以使用 .net framework来对它进行扩展。有2种为Fiddler扩展准备的基本机制：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;自定义规则，和规则检查。&lt;/font&gt;&lt;br /&gt;使用脚本化的规则来扩展Fiddler&lt;br /&gt;Fiddler支持JScript .NET引擎，它可以允许用户自动地修改Http请求和响应。这个引擎能够在可视化界面修改在FiddlerUI中的Session，可以从列表中提取你感兴趣的错误，也可以移除你不感兴趣的Session。 &lt;br /&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;以下的示例代码演示当cookie被加载的时候把界面变成紫色。&lt;/font&gt;&lt;br /&gt;static function OnBeforeRequest(oSession:Fiddler.Session){ if (oSession.oRequest.headers.Exists("Cookie")){ oSession["ui-color"] = "purple"; oSession["ui-bold"] = "cookie"; }}&lt;br /&gt;通过加入Inspectors来扩展Fiddler&lt;font style="font-size: 12pt"&gt;用户可以加入一个Inspector插件对象，来使用.net下的任何语言来编写Fiddler扩展。RequestInspectors 和 ResponseInspectors提供一个格式规范的，或者是被指定的（用户自定义）Http请求和响应视图。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;默认安装中，Fiddler加入了一下的Inspectors：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Request Inspectors&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] Headers&amp;#8212;Shows request headers and status. &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] TextView&amp;#8212;Shows the request body in a text box. （原始的请求body视图）&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] HexView&amp;#8212;Shows the request body in a hexadecimal view. （body的16进制视图）&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RO] XML&amp;#8212;Shows the request body as an XML DOM in a tree view.（以XML方式展示请求）&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;Response Inspectors&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] Transformer&amp;#8212;Removes GZip, DEFLATE, and CHUNKED encodings for easier debugging. &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] Headers&amp;#8212;Shows response headers and status. &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] TextView&amp;#8212;Shows the response body in a text box. &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RW] HexView&amp;#8212;Shows the response body in a hexadecimal view. （16进制视图）&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RO] ImageView&amp;#8212;Shows the response body as an Image. Supports all .NET image formats.&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RO] XML&amp;#8212;Shows the response body as an XML DOM in a tree view. &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 12pt"&gt;[RO] Privacy&amp;#8212;Explains the P3P statement in the response headers, if present.（如果在响应头中有关于隐私策略的说明就展示出来）&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;学习如何通过Fiddler建立一个速度更快的网站。在这篇文章中，我们将使用Fiddler去探究HTTP的性能，缓存，以及压缩。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;如果你要是没有安装和配置过Fiddler， 请从文章的第一篇开始。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;HTTP性能总览&lt;font style="font-size: 14pt"&gt;毫 无疑问用户都喜欢访问速度快的网站。用户是非常的不耐烦，除非你的网站是没有竞争对手，换句 话就是处于垄断地位的。如果你的访问者来自世界各地，那你就必须要保证你的网站在执行效率方面要非常好，甚至要更加标准。作为一个国际化的网络连接点，通 常要受到来自两个方面的压力：高访问量以及低带宽。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;在第一次至关重要的访问中，用户必须要下载每一个内容片断，来生成页面，包括JS，CSS，Images，HTML，如果你的页面太难加载（包括IIS接到请求执行并返回给客户端HTML），访问者也许就会离开你的页面！&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;通过暴露所有的HTTP通讯，Fiddler很容易得向你展示哪些文件经常被用于生成一个页面，&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Shift+click 可以在Fiddler左边框的会话列表中多选会话，来计算那些被选会话的&amp;#8220;页面总重量&amp;#8221;。那些被转换成字节的数量。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;如果你想让你的客户在第一次访问的时候就留下深刻的印象 ，那么最好的，也是唯一的途径就是返回给客户更少的文件。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;1 使用更少的图画&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;2 将所有的CSS浓缩到一个CSS文件中&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;3 将所有的脚本浓缩到一个JS文件中&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;4 简化你的页面时间&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;5 使用HTTP压缩&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;如果要是你已经对用户的第一次来访的性能进行了优化，那么你可以通过Http 缓存的优势来使得你的网站访问速度更快！&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;HTTP 缓存介绍&lt;font style="font-size: 14pt"&gt; &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;2种方式来提升你的web 应用程序的速度：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;减少请求和响应的&lt;span style="padding-right: 0pt; display: inline; padding-left: 0pt; float: none; padding-bottom: 0pt; cursor: pointer; color: blue; padding-top: 0pt; border-bottom: 1px dashed; text-decoration: underline"&gt;往返&lt;/span&gt;次数&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;减少请求和响应的往返字节大小。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;HTTP 缓存是最好的减少客户端服务器端往返次数的办法。缓存提供了提供一种机制来保证客户端 或者代理能够存储一些东西，而这些东西将会在稍后的HTTP 响应中用到的。（即第一次请求了，到了客户端，缓存起来，下次如果页面还要这个JS文件或者CSS文件啥的，就不要到服务器端去取下来了，但是还是要去服 务器上去访问一次，因为请求要对比ETAG值，关于这个值，我将会在下次翻译中介绍其作用）这样，就不用让文件再次跨越整个网络了。 &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;缓存相关的请求头&lt;font style="font-size: 14pt"&gt; &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;为了提高性能，微软的IE和其他的web客户端总是想尽办法来维持从远程服务器上下载下来的本地的缓存。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;当客户端需要一个资源（html,css.js&amp;#8230;），他们有3种可能的动作：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;1 发送一个一般的HTTP请求到远程服务器端，请求这个资源。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;2 发送一个有条件的HTTP请求到服务器，条件就是如果它不同于本地的缓存版本。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;3 如果缓存的拷贝可用，就使用本地的缓存资源。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;当发送一个请求，客户也许会使用如下的几个HEADER&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;Table 1. Client Cache Headers&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;table  style="width: 90%" cellspacing="1" cellpadding="4"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="36%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;Pragma: no-cache&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="64%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The client is unwilling to accept any cached responses from caches along the route and the origin server must be contacted for a fresh copy of the resource.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="36%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;If-Modified-Since: datetime&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="64%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The server should return the requested resource only if the resource has been modified since the date-time provided by the client.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="36%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;If-None-Match: etagvalue&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="64%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The server should return the requested resource if the ETAG of the resource is different than the value provided by the client. An &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19" target="_blank"&gt;&lt;font color="#8d8c8c"&gt;ETAG&lt;/font&gt;&lt;/a&gt; is a unique identifier representing a particular version of a file. &lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;1 Pragma：no-cache 表明客户端不愿意接受缓存请求，它需要的是最即时的资源。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;2 If-Modified-Since: datetime 表明如果这个资源自从上次被客户端请求，就已经修改了，那么服务器就会返回给客户端最新的。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;3 If-None-Match: etagvalue 如果客户端资源的ETAG值跟服务器端不一致了，那么服务器端返回最新的资源。ETAG就是一个唯一的ID，用来表示一个文件的一个特定的版本。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;如 果要是这些有条件的请求，也就是含有If-Modified-Since 或者 If-None-MatchHeader头的请求，服务器将会以HTTP/304 Not Modified 来作为响应，那么客户端就知道可以使用客户端的缓存了。否则，服务器将会返回一个新的响应并且客户端就会抛弃过期的缓存资源。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;你 可以观察2个连贯的请求，来请求同一个图片，你会在Fiddler中发现：在第一个本地缓存 版本中，服务器返回一个含有ETAG的文件，和一个含有最后修改日期的文件，在这个第一次的请求会话中，一个本地的缓存版本已经可以使用了。这样一来，一 个有条件的请求就被创建出来。然后你再次请求这个图片的时候，他就就会响应一个本地缓存的文件，当然前提是第一次缓存的图片的ETAG值或者If- Modified-Since 值跟服务器上匹配的话，服务器就响应一个304给客户端。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Session #1&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;GET /images/banner.jpg HTTP/1.1&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Host: &lt;a href="http://www.bayden.com/" target="_blank"&gt;http://www.bayden.com/&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;HTTP/1.1 200 OK&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Date: Tue, 08 Mar 2006 00:32:46 GMT&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Content-Length: 6171&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Content-Type: image/jpeg&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;ETag: "40c7f76e8d30c31:2fe20"&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Last-Modified: Thu, 12 Jun 2003 02:50:50 GMT&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Session #2&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;GET /images/banner.jpg HTTP/1.1&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;If-Modified-Since: Thu, 12 Jun 2003 02:50:50 GMT&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;If-None-Match: "40c7f76e8d30c31:2fe20"&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Host: &lt;a href="http://www.bayden.com/" target="_blank"&gt;http://www.bayden.com/&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;HTTP/1.1 304 Not Modified&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;因为一个HTTP304响应仅仅包含头，没有body,所有它在穿越互联网的时候要比携带了资源的快很多，尽管如此，HTTP/304响应需要一个服务器的往返，但是通过细心的设置响应头，web程序员可以消除这种因素，甚至是有条件的请求。&lt;/font&gt;&lt;br /&gt;缓存相关响应头&lt;font style="font-size: 14pt"&gt; &lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;通常缓存机制是由响应头来控制的。HTTP规范描述了Header控制缓存，The optional Cache-Control，Expires（过期）。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Expires头包含一个绝对的日期，当超过此日期，它将不会被考虑更新了。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;Table 2. Common Cache-Control Headers&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;table  style="width: 90%" cellspacing="1" cellpadding="4"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;Value&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;Meaning&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;public&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response may be stored in any cache, including caches shared among many users.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;private&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response may only be stored in a private cache used by a single user.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;no-cache&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response should not be reused to satisfy future requests.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;no-store&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response should not be reused to satisfy future requests, and should not be written to disk. This is primarily used as a security measure for sensitive responses.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;max-age=#seconds&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response may be reused to satisfy future requests within a certain number of seconds.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  width="28%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;must-revalidate&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td  width="70%"&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;The response may be reused to satisfy future requests, but the origin server should first be contacted to verify that the response is still fresh.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Cache-Control头的参数设置：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Public 响应会被缓存，并且在多用户间共享。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Private 响应只能够作为私有的缓存，不能再用户间共享。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;No-cache 响应不会被缓存&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;No-store 响应不会被缓存，并且不会被写入到客户端的磁盘里，这也是基于安全考虑的某些敏感的响应才会使用这个。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Max-age=#seconds 响应将会某个指定的秒数内缓存，一旦时间过了，就不会被缓存。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Must-revalidate 响应会被重用来满足接下来的请求，但是它必须到服务器端去验证它是不是仍然是最新的。&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="font-size: 14pt"&gt;注意：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;如果你要想在iis中配置缓存，请参阅温软的知识技术文章：&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;&amp;#183; &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;247404" target="_blank"&gt;&lt;font color="#8d8c8c"&gt;How to Modify the Cache-Control HTTP Header When You Use IIS&lt;/font&gt;&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;&lt;font style="font-size: 14pt"&gt;你可以学习更多关于在asp.net中使用缓存的知识文章：&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;p align="left"&gt;&lt;font style="font-size: 14pt"&gt;&amp;#183; &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;323290" target="_blank"&gt;&lt;font color="#8d8c8c"&gt;How To Cache in ASP.NET by Using Visual C# .NET&lt;/font&gt;&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;&lt;font style="font-size: 14pt"&gt;如 果你发现你经常在你的网站上更新文件，但是并没有更改文件名字，那你就必须要非常小心地设置 你的缓存生存时间。例如：如果你要一个thisyear.gif图片文件显示当前的年份在网站上，你需要保证这个缓存过期时间不能超过一天，否则一个用户 在12月31号访问你的网站的时候，在1月1号就不能显示正确的日期。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;由于某些原因，服务器可能会设置：Progma：no-cache 头，Cache-control:no-cache&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Header中的参数：Vary 是一个缓存信号，Vary：User-Agent表示缓存当前的响应，但是仅限于当发送同样的User-Agent 头的时候。指令 Vary：* 就相当于Cache-Control：no-Cache。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;Vary就相当于asp.net中的缓存的参数一样，意思是根据什么来缓存，如果要是知道asp.net的缓存的使用方法，就很容易明白这个参数的意思。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;使用HTTP会话列表，Fiddler用户可以看到在页面里包含的ＨＴＴＰ缓存头。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;Ｆｉｄｄｌｅｒ　会话列表&lt;font style="font-size: 14pt"&gt;如果响应不包含Ｅｘｐｉｒｅｓ或者Ｃａｃｈｅ－Ｃｏｎｔｒｏｌ，那么客户端就会被迫作为一个有条件的请求，来保证所有的资源都是最新的。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;有条件的请求和ＷｉｎＩｎｅｔＣａｃｈｅ&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;ＩＥ通过Ｍｉｃｒｏｓｏｆｔ　ｗｉｎｄｏｗｓ　Ｉｎｔｅｒｎｅｔ　Ｓｅｒｖｉｃｅｓ来最大程度的利用缓存服务。ＷｉｎＩｎｅｔ允许用户配置缓存的大小和行为，设置缓存进行如下操作：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;１　打开ＩＥ，&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;２　工具选项，选择Ｉｎｒｅｒｎｅｔ选项，在一般子选项中，临时文件夹内，点击设置&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;下图就是选村的四种设置：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;标记性能问题：&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;你可以使用Ｆｉｄｄｌｅｒ的自定义规则来标记某些你需要的，比如如果某个响应大于２５ＫＢ，你可以把当前的Ｓｅｓｓｉｏｎ标记为红色，更加醒目。以下代码都是在OnBeforeResponse事件中：&lt;/font&gt;&lt;br /&gt;// Flag files over 25KB if (oSession.responseBodyBytes.length &amp;gt; 25000){ oSession["ui-color"] = "red"; oSession["ui-bold"] = "true"; oSession["ui-customcolumn"] = "Large file"; }同样，你也可以标记响应并不指示缓存信息。 // Mark files which do not have caching informationif (!oSession.oResponse.headers.Exists("Expires") &amp;amp;&amp;amp;!oSession.oResponse.headers.Exists("Cache-Control")){ oSession["ui-color"] = "purple"; oSession["ui-bold"] = "true"; }介绍ＨＴＴＰ压缩&lt;font style="font-size: 14pt"&gt;所有的目前流行的ＷＥＢ服务器和浏览器都提供ＨＴＴＰ压缩支持。 ＨＴＴＰ压缩可以非常显著地降 低客户端和服务器端的通讯量。节省超过５０％的ＨＴＭＬ，ＸＭＬ，ＣＳＳ，ＪＳ等文件。一个浏览器发送一个信号给服务器，他可以介绍ＨＴＴＰ压缩过的内 容，并且会把客户端所支持的压缩类型放在请求的Ｈｅａｄｅｒ中，例如：考虑如下的请求：&lt;/font&gt;&lt;br /&gt;GET / HTTP/1.1Accept: */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)Host: search.msn.com&lt;font style="font-size: 14pt"&gt;这个　Ａｃｃｅｐｔ－Ｅｎｃｏｄｉｎｇ　头表明ＩＥ将愿意接受ＧＺＩＰ格式的和ＤＥＦＬＡＴＥ格式的压缩响应。&lt;/font&gt;&lt;br /&gt;&lt;font style="font-size: 14pt"&gt;相应的响应如下：&lt;/font&gt;&lt;br /&gt;HTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Server: Microsoft-IIS/6.0 --Microsoft-HTTPAPI/1.0X-Powered-By: ASP.NETVary: Accept-EncodingContent-Encoding: gzipDate: Tue, 15 Feb 2006 09:14:36 GMTContent-Length: 1277Connection: closeCache-Control: private, max-age=3600 &lt;font style="font-size: 14pt"&gt;你可以使用Ｆｉｄｄｌｅｒ来解压缩这些数据。实验表明，使 用ＨＴＴＰ压缩能大量减少数据往返， 一个普通的ＣＳＳ文件甚至能减少８０％！当然压缩是以牺牲ＣＰＵ性能为代价的。特别是压缩动态文件，但是一般的权宜之策是压缩例如ＪＳ，ＣＳＳ等静态文 件，因为他们在第一次压缩后，就会被存储在服务器上，如果要压缩ａｓｐ．ｎｅｔ动态文件，一定要有个权衡才行&lt;br /&gt;&lt;br /&gt;引用:http://hi.baidu.com/swfczm/blog/item/cd1b22a98137e4fa1e17a212.html&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/1890801.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2010/11/29/1890801.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2010/08/12/1798306.html</id><title type="text">使用VS2005的 ClickOnce 技术实现按需下载组件</title><summary type="text">源地址：http://blog.joycode.com/ghj/archive/2007/06/14/104220.joy使用VS2005的 ClickOnce 技术实现按需下载组件 默认情况下，首次运行 ClickOnce 应用程序时，会下载该应用程序中包含的所有程序集。但是一些特殊的场景我们可能不希望它这么干，而是希望按照一定规测或者需要用到某个组件的时候再下载。比如我们可能会有下面一些应用场...</summary><published>2010-08-12T09:32:00Z</published><updated>2010-08-12T09:32:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798306.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798306.html"/><content type="html">&lt;div &gt;源地址：&lt;a href="http://blog.joycode.com/ghj/archive/2007/06/14/104220.joy"&gt;http://blog.joycode.com/ghj/archive/2007/06/14/104220.joy&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;a href="http://blog.joycode.com/ghj/archive/2007/06/14/104220.joy"&gt;使用VS2005的 ClickOnce 技术实现按需下载组件&lt;/a&gt; &lt;/div&gt;&#xD;
&lt;p&gt;默认情况下，首次运行 ClickOnce 应用程序时，会下载该应用程序中包含的所有程序集。但是一些特殊的场景我们可能不希望它这么干，而是希望按照一定规测或者需要用到某个组件的时候再下载。&lt;/p&gt;&#xD;
&lt;p&gt;比如我们可能会有下面一些应用场景的需求：&lt;/p&gt;&#xD;
&lt;p&gt;1、我开发的这个客户端程序是要收费的。但是免费用户也可以使用部分功能。我在技术实现上把收费用户使用的功能封装到了A.dll 组件了，我希望免费用户根本无法获得A.dll，只有收费用户才能获得A.dll，并加载A.dll中的收费功能。&lt;/p&gt;&#xD;
&lt;p&gt;2、我整个应用程序非常大，我不希望我每次更新，用户都需要把所有应用程序都下载下来，用户应该只需要下载他用到的功能组件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面我们就来实现一个简单的按需下载的例子，我们完全可以在这个例子基础上，实现上述提到的应用场景1。&lt;/p&gt;&#xD;
&lt;p&gt;演示步骤：&lt;/p&gt;&#xD;
&lt;p&gt;一、新建一个 类库 Project&lt;/p&gt;&#xD;
&lt;p&gt;定义类库输出应用程序名为：OnDemandAssembly，即这个类库编译后产生的文件名为 OnDemandAssembly.dll&lt;/p&gt;&#xD;
&lt;p&gt;这个类库中有如下代码，我们用这段代码来模拟上面提到场景中的一些需要按需加载的功能或者是收费的功能，我们将在主程序中调用这个功能：&lt;/p&gt;&#xD;
&lt;p&gt;using System; &#xD;
&lt;p&gt;namespace OnDemandAssembly&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class DynamicClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "郭红俊测试ClickOnce按需加载功能。";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;}&lt;br /&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二、新建一个 Window 应用程序&lt;/p&gt;&#xD;
&lt;p&gt;我们将在这个Window 应用程序中加载上述类库。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;为了便于我们演示这个程序，请确保这个Window程序具备以下功能：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、有一个 textbox 控件，这个控件在 Window 的OnLoad 事件中，把应用程序的目录显示在这里，方便我们去监控是否上述 OnDemandAssembly.dll 组件被加载了。&lt;/p&gt;&#xD;
&lt;p&gt;代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;private void Form1_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.textBox1.Text = Application.StartupPath;&lt;br /&gt;} &#xD;
&lt;p&gt;2、由一个&amp;nbsp; Button&amp;nbsp; 按钮，点击这个按钮后，我们把 OnDemandAssembly.dll 组件中的 Message 信息显示出来，代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;private void button1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DynamicClass o = new DynamicClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(o.Message);&lt;br /&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Window程序关于ClickOnce设置比较特殊的地方：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们来配置ClickOnce发布的一些特殊参数，确保可以按需下载需要的组件&lt;/p&gt;&#xD;
&lt;p&gt;本文中没有详细描述ClickOnce设置的各个步骤和参数，如果你对ClickOnce不是很熟悉，建议你首先看一些ClickOnce的入门文章再来看本文。&lt;/p&gt;&#xD;
&lt;p&gt;比如：&lt;a title="http://blog.oracle.com.cn/155011/viewspace_3603.html" href="http://blog.oracle.com.cn/155011/viewspace_3603.html"&gt;http://blog.oracle.com.cn/155011/viewspace_3603.html&lt;/a&gt;&amp;nbsp;这里提供的ClickOnce 文章（这里是提供了一个word压缩文件下载，文章在压缩的Word文件中）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;选择我们的Window程序，在右键菜单中选择属性，在属性页中选择发布（Publish）标签页。&lt;/p&gt;&#xD;
&lt;p&gt;然后点击 Application File 按钮，我们来设置，需要发布的文件。如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img id="ViewPicture_ascx_GalleryImage" style="border-right: black 2px solid; border-top: black 2px solid; border-left: black 2px solid; width: 640px; border-bottom: black 2px solid; height: 462px" alt="VS2005发布设置中,选择需要发布那些文件的按钮位置" src="http://blog.joycode.com/images/blog.joycode.com/ghj/1422/r_200706141414.JPG" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上述按钮打开的窗口如下：&lt;/p&gt;&#xD;
&lt;p&gt;我们在打开的窗口中，设置 OnDemandAssembly.dll 文件的 发布状态为 Include，&lt;/p&gt;&#xD;
&lt;p&gt;并在 Download Group 中为OnDemandAssembly.dll 文件新建的一个下载组，我们这里把这个新的下载组命名为 DemandAssembly01 。&lt;/p&gt;&#xD;
&lt;p&gt;说明：&lt;/p&gt;&#xD;
&lt;p&gt;默认情况下，我们用ClickOnce 第一次安装，或者升级程序的时候，系统只下载 Required 组的文件，其他组的文件系统不下载，需要我们自己编码来下载。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="576" src="http://blog.joycode.com/images/blog.joycode.com/ghj/1422/o_200706141227.JPG" width="711"  alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其他ClickOnce的设置跟我们平常使用的时候一样来设置。本文忽略这部分。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们这时候发布这个程序，我们下载安装后，就会发现OnDemandAssembly.dll 文件不在安装目录下，点击这个程序的按钮，就会报异常，找不到需要的应用程序集&lt;/p&gt;&#xD;
&lt;p&gt;OnDemandAssembly.dll 组件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;下面我们来编码实现，如果应用程序找不到 OnDemandAssembly.dll 组件，就从网上下载这个组件的功能&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、窗口的构造函数中增加 AssemblyResolve 事件的处理逻辑&lt;/p&gt;&#xD;
&lt;p&gt;public Form1()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent(); &#xD;
&lt;p&gt;AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);&lt;br /&gt;} &#xD;
&lt;p&gt;Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)&lt;br /&gt;{ &#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;说明：AppDomain.AssemblyResolve 事件 在对程序集的解析失败时发生。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、下面我们编码实现 AssemblyResolve&amp;nbsp; 事件的处理逻辑&lt;/p&gt;&#xD;
&lt;p&gt;using System.Reflection;&lt;br /&gt;using System.Deployment.Application;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;// 如果我们有多个文件都需要按需下载的话，每个文件影射到那个下载分组，就是这个实体来记录的&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Dictionary&amp;lt;String, String&amp;gt; DllMapping = new Dictionary&amp;lt;String, String&amp;gt;();&lt;/p&gt;&#xD;
&lt;p&gt;public Form1()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DllMapping["OnDemandAssembly"] = "DemandAssembly01";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);&lt;br /&gt;} &#xD;
&lt;p&gt;Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assembly newAssembly = null; &#xD;
&lt;p&gt;// 是 ClickOnce 部署方式&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ApplicationDeployment.IsNetworkDeployed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; &#xD;
&lt;p&gt;// Get the DLL name from the Name argument.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] nameParts = args.Name.Split(',');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string dllName = nameParts[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string downloadGroupName = DllMapping[dllName]; &#xD;
&lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 下载所需要的文件&lt;/em&gt;&amp;nbsp;&lt;br /&gt;　　try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deploy.DownloadFileGroup(downloadGroupName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (DeploymentException de)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Downloading file group failed. Group name: " + downloadGroupName + "; DLL name: " + args.Name);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw (de);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;// 加载组件到应用程序集&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load the assembly.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assembly.Load() doesn't work here, as the previous failure to load the assembly&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is cached by the CLR. LoadFrom() is not recommended. Use LoadFile() instead.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newAssembly = Assembly.LoadFile(Application.StartupPath + @"\" + dllName + ".dll");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw (e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Major error - not running under ClickOnce, but missing assembly. Don't know how to recover.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw (new Exception("Cannot load assemblies dynamically - application is not deployed using ClickOnce."));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;return (newAssembly);&lt;br /&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一些问题说明：&lt;/p&gt;&#xD;
&lt;p&gt;Ｑ：上述代码中，如果我们这个组件OnDemandAssembly.dll 有最新版本了，并且发布了，但是客户端还是一个老的版本的话，这个逻辑我们没有处理呀？&lt;/p&gt;&#xD;
&lt;p&gt;Ａ：问题这个问题，就是代表你对 ClickOnce 的原理还是不懂，OnDemandAssembly.dll 有最新版本，那你就必须再重新发布一个版本的ClickOnce代码，这时候发布的版本号就不一样了。客户端下&lt;strong&gt;不同版本号的ClickOnce 程序是存在不同目录下的&lt;/strong&gt;（当然服务器也是一样）。&lt;/p&gt;&#xD;
&lt;p&gt;系统检查到你的新版本程序发布后，会为新的版本号建立目录，这个目录下如果你没有用过OnDemandAssembly.dll 的功能，是不会有OnDemandAssembly.dll 组件的，继而上述问题是可以不用考虑的。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/1798306.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798306.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2010/08/12/1798301.html</id><title type="text">转帖：麻雀虽小，五脏俱全－C# 创建windows服务、socket通讯实例</title><summary type="text">转：http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html一个windows 服务结合 Soctket、邮件发送、短信发送的小应用。功能不大，但是用到的.net下的知识点很多，我感觉对初步接触这几个相关知识的朋友还是有学习意义的。这个功能来源于一个监视文件夹的需求：1、 轮询监视文件夹内文件的状态2、 在发现异常后通过邮件和短...</summary><published>2010-08-12T09:30:00Z</published><updated>2010-08-12T09:30:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798301.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798301.html"/><content type="html">&lt;p&gt;转：&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html"&gt;http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一个windows 服务结合 Soctket、邮件发送、短信发送的小应用。功能不大，但是用到的.net下的知识点很多，我感觉对初步接触这几个相关知识的朋友还是有学习意义的。&lt;/p&gt;&#xD;
&lt;p&gt;这个功能来源于一个监视文件夹的需求：&lt;/p&gt;&#xD;
&lt;p&gt;1、 轮询监视文件夹内文件的状态&lt;/p&gt;&#xD;
&lt;p&gt;2、 在发现异常后通过邮件和短信的方式通知管理员。&lt;/p&gt;&#xD;
&lt;p&gt;3、 在有外网环境下使用邮件方式通知。&lt;/p&gt;&#xD;
&lt;p&gt;4、 无外网情况下，通过局域网中一台带有的短信设备电脑发送短信提醒。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在经过具体的功能分析后，将功能划分为4个小功能单元：&lt;/p&gt;&#xD;
&lt;p&gt;1、&amp;nbsp; 运用c#开发windows服务来实现对文件夹的轮询监视。&lt;/p&gt;&#xD;
&lt;p&gt;2、&amp;nbsp; 引用.net框架内的system.net.mail 命名控件的下的邮件处理类来实现邮件的发送。&lt;/p&gt;&#xD;
&lt;p&gt;3、&amp;nbsp; 局域网内采用scoket解决局域网内短信设备计算机与监控计算机之间的通讯问题。&lt;/p&gt;&#xD;
&lt;p&gt;4、&amp;nbsp; C#对短信设备进行简单必要的二次开发。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、windows服务实现轮询监视&lt;/p&gt;&#xD;
&lt;p&gt;Windows 服务，以前的NT服务，都是被作为Windows NT操作系统的一部分引进来的。你需要使用NT级别的操作系统才可运行Windows服务，诸如：Windows NT、Windows 2000 Professional、windows XP或Windows 2000 Server以上操作系统。举例而言，以Windows服务形式的产品有：Microsoft Exchange、SQL Server，还有别的如设置计算机时钟的Windows Time服务。它随 Windows 操作系统启动而启动的，在后台运行的，通常不和用户产生交互的程序。&lt;/p&gt;&#xD;
&lt;p&gt;在.net框架下创建Windows 服务非常的简单快捷，它封装了Windows服务程序的创建和控制过程，程序相关的命名空间涉及到以下两个：System.ServiceProcess和System.Diagnostics。&lt;/p&gt;&#xD;
&lt;p&gt;首先是创建windows服务，在.net框架中直接创建windows服务项目即可，在服务启动事件中添加必要的逻辑处理。〔实现见下代码〕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; OnStart(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[] args)&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO: 在此处添加代码以启动服务。&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;读取配置信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000"&gt;            ReadConfig();&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
timer1.Elapsed&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; System.Timers.ElapsedEventHandler(timer1_Elapsed);&lt;br /&gt;&#xD;
timer1.Interval &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; GlobalInfo.TimeInterval;&lt;br /&gt;&#xD;
timer1.Start();&lt;br /&gt;&#xD;
}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; timer1_Elapsed(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt; sender, System.Timers.ElapsedEventArgs e)&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
DirectoryInfo dirs &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; DirectoryInfo(GlobalInfo.DirName); &lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; count&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="color: #000000"&gt; (GlobalInfo.Type)&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;延迟时间&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt; (FileInfo var &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; dirs.GetFiles())&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
DateTime createTime &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; var.CreationTime;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (System.DateTime.Now &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; createTime.AddHours(GlobalInfo.Size))&lt;br /&gt;&#xD;
count&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&#xD;
}&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (count &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&#xD;
MessageSender.Send(GlobalInfo.Norm &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt; : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;{0}个数据文件延迟超过{1}小时,请关注。[报告时间：{2}]&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;, count.ToString(), GlobalInfo.Size.ToString(), System.DateTime.Now.ToString()));&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;延时数据包个数&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #000000"&gt;                    count &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; dirs.GetFiles().Length;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (count &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; GlobalInfo.Count)&lt;br /&gt;&#xD;
MessageSender.Send(GlobalInfo.Norm &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt; : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;同时有{0}个数据文件滞留,请关注。[报告时间：{1}]&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;, count.ToString(), System.DateTime.Now.ToString()));&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&#xD;
}&lt;br /&gt;&#xD;
}&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二、邮件发送功能&lt;/p&gt;&#xD;
&lt;p&gt;在以前的一篇文章中提到过邮件类的使用，所以就不在作详细说明了。〔附代码：见下〕&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div  id="highlighter_749881"&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&lt;a  title="view source" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#viewSource" highlighterid="highlighter_749881" commandname="viewSource"&gt;view source&lt;/a&gt; &#xD;
&lt;div &gt;&#xD;
&lt;object id="highlighter_749881_clipboard" title="copy to clipboard" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash" height="16" width="16" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;&#xD;
&lt;param name="_cx" value="423"   /&gt;&lt;param name="_cy" value="423"   /&gt;&lt;param name="FlashVars" value=""   /&gt;&lt;param name="Movie" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="Src" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="WMode" value="Transparent"   /&gt;&lt;param name="Play" value="0"   /&gt;&lt;param name="Loop" value="-1"   /&gt;&lt;param name="Quality" value="High"   /&gt;&lt;param name="SAlign" value=""   /&gt;&lt;param name="Menu" value="0"   /&gt;&lt;param name="Base" value=""   /&gt;&lt;param name="AllowScriptAccess" value="always"   /&gt;&lt;param name="Scale" value="ShowAll"   /&gt;&lt;param name="DeviceFont" value="0"   /&gt;&lt;param name="EmbedMovie" value="0"   /&gt;&lt;param name="BGColor" value=""   /&gt;&lt;param name="SWRemote" value=""   /&gt;&lt;param name="MovieData" value=""   /&gt;&lt;param name="SeamlessTabbing" value="1"   /&gt;&lt;param name="Profile" value="0"   /&gt;&lt;param name="ProfileAddress" value=""   /&gt;&lt;param name="ProfilePort" value="0"   /&gt;&lt;param name="AllowNetworking" value="all"   /&gt;&lt;param name="AllowFullScreen" value="false"   /&gt;&lt;/object&gt;&lt;/div&gt;&lt;a  title="print" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#printSource" highlighterid="highlighter_749881" commandname="printSource"&gt;print&lt;/a&gt;&lt;a  title="?" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#about" highlighterid="highlighter_749881" commandname="about"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;static&lt;/code&gt; &lt;code &gt;void&lt;/code&gt;&amp;nbsp; &lt;code &gt;Send(&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;titel,&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;megHtml,&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;subject) &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;meg = &lt;/code&gt;&lt;code &gt;""&lt;/code&gt;&lt;code &gt;; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//发送者 &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;smtpAuthUsername = GlobalInfo.SenderAddr; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//发送者密码 &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;smtpAuthPassword = GlobalInfo.SenderPwd; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//发送服务器 &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;smtpServer = GlobalInfo.SmtpServer; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;objEmail = GlobalInfo.ObjAddr; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//定义传输协议&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;System.Net.Mail.SmtpClient smtp = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.Mail.SmtpClient(smtpServer); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//设置认证发件人&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;smtp.Credentials = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//异步发送完成获取发送状态&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;smtp.SendCompleted += &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;try&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;System.Net.Mail.MailMessage mail = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.Mail.MailMessage(); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.From = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.Mail.MailAddress(smtpAuthUsername, smtpAuthUsername); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//回复人，回复人名&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.ReplyTo = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;System.Net.Mail.MailAddress(smtpAuthUsername, smtpAuthUsername); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//收件人&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.To.Add(objEmail); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//邮件优先级&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.Priority = System.Net.Mail.MailPriority.Normal; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//设置html邮件&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.IsBodyHtml = &lt;/code&gt;&lt;code &gt;true&lt;/code&gt;&lt;code &gt;; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//标题&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;31&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.Subject = titel; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;32&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//内容&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;33&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;mail.Body = megHtml; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;34&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;smtp.Send(mail); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;35&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;36&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;meg = &lt;/code&gt;&lt;code &gt;string&lt;/code&gt;&lt;code &gt;.Format(&lt;/code&gt;&lt;code &gt;"{0} {1}邮件发送成功。"&lt;/code&gt;&lt;code &gt;, System.DateTime.Now.ToString(), objEmail); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;37&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;38&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;WriteLog(meg); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;39&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;40&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;catch&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;41&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;42&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;meg = &lt;/code&gt;&lt;code &gt;string&lt;/code&gt;&lt;code &gt;.Format(&lt;/code&gt;&lt;code &gt;"{0} {1}邮件发送失败。"&lt;/code&gt;&lt;code &gt;, System.DateTime.Now.ToString(), objEmail); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;43&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;44&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;WriteLog(meg); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;45&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;46&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;47&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;三、局域网内Socket通讯&lt;/p&gt;&#xD;
&lt;p&gt;Socket原意是&amp;#8220;插座&amp;#8221;。应用层通过传输层进行数据通信时，TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接，许多计算机操作系统为应用程序与TCP／IP协议交互提供了称为套接字(Socket)的接口，区分不同应用程序进程间的网络通信和连接。 生成套接字，主要有3个参数：通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。通过将这3个参数结合起来，与一个&amp;#8220;插座&amp;#8221;Socket绑定，应用层就可以和传输层通过套接字接口，区分来自不同应用程序进程或网络连接的通信，实现数据传输的并发服务。 Socket可以看成在两个程序进行通讯连接中的一个端点，一个程序将一段信息写入Socket中，该Socket将这段信息发送给另外一个Socket中，使这段信息能传送到其他程序中。&lt;/p&gt;&#xD;
&lt;p&gt;因为现有的短信设备位与局域网内的另外一台服务器上，所以需要在短信通知状态下，需要将信息发送到局域网内另一台电脑。用socket通讯的话需要一个接收信息的客户端。并且客户端需要一些参数的设置。比如：接收电话号码、开机启动、通讯计算机IP、等。〔信息接收代码见下〕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div  id="highlighter_644837"&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&lt;a  title="view source" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#viewSource" highlighterid="highlighter_644837" commandname="viewSource"&gt;view source&lt;/a&gt; &#xD;
&lt;div &gt;&#xD;
&lt;object id="highlighter_644837_clipboard" title="copy to clipboard" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash" height="16" width="16" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;&#xD;
&lt;param name="_cx" value="423"   /&gt;&lt;param name="_cy" value="423"   /&gt;&lt;param name="FlashVars" value=""   /&gt;&lt;param name="Movie" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="Src" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="WMode" value="Transparent"   /&gt;&lt;param name="Play" value="0"   /&gt;&lt;param name="Loop" value="-1"   /&gt;&lt;param name="Quality" value="High"   /&gt;&lt;param name="SAlign" value=""   /&gt;&lt;param name="Menu" value="0"   /&gt;&lt;param name="Base" value=""   /&gt;&lt;param name="AllowScriptAccess" value="always"   /&gt;&lt;param name="Scale" value="ShowAll"   /&gt;&lt;param name="DeviceFont" value="0"   /&gt;&lt;param name="EmbedMovie" value="0"   /&gt;&lt;param name="BGColor" value=""   /&gt;&lt;param name="SWRemote" value=""   /&gt;&lt;param name="MovieData" value=""   /&gt;&lt;param name="SeamlessTabbing" value="1"   /&gt;&lt;param name="Profile" value="0"   /&gt;&lt;param name="ProfileAddress" value=""   /&gt;&lt;param name="ProfilePort" value="0"   /&gt;&lt;param name="AllowNetworking" value="all"   /&gt;&lt;param name="AllowFullScreen" value="false"   /&gt;&lt;/object&gt;&lt;/div&gt;&lt;a  title="print" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#printSource" highlighterid="highlighter_644837" commandname="printSource"&gt;print&lt;/a&gt;&lt;a  title="?" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#about" highlighterid="highlighter_644837" commandname="about"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;Socket socket = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;try&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;socket.Bind(&lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;IPEndPoint(IPAddress.Parse(Info.IP), &lt;/code&gt;&lt;code &gt;int&lt;/code&gt;&lt;code &gt;.Parse(Info.PORT))); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;socket.Listen((&lt;/code&gt;&lt;code &gt;int&lt;/code&gt;&lt;code &gt;)SocketOptionName.MaxConnections); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;while&lt;/code&gt; &lt;code &gt;(&lt;/code&gt;&lt;code &gt;true&lt;/code&gt;&lt;code &gt;) &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;Socket a = socket.Accept(); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;if&lt;/code&gt; &lt;code &gt;(a.Connected) &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;byte&lt;/code&gt;&lt;code &gt;[] stream = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;byte&lt;/code&gt;&lt;code &gt;[80]; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;a.Receive(stream); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;message = System.Text.Encoding.UTF8.GetString(stream); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;InsertRechText ins = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;InsertRechText(Insert); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;Invoke(ins, &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;object&lt;/code&gt;&lt;code &gt;[] { message }); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;if&lt;/code&gt; &lt;code &gt;(isover) &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;return&lt;/code&gt;&lt;code &gt;; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;catch&lt;/code&gt; &lt;code &gt;(Exception ex) &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;WriteLog(&lt;/code&gt;&lt;code &gt;string&lt;/code&gt;&lt;code &gt;.Format(&lt;/code&gt;&lt;code &gt;"接收信息失败。[{0}]"&lt;/code&gt;&lt;code &gt;, ex.Message)); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;throw&lt;/code&gt; &lt;code &gt;ex; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;} &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;finally&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;{ &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;socket.Close(); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;四、短信设备二次开发&lt;/p&gt;&#xD;
&lt;p&gt;短信设备用的是人大金仓的DG-C1A 短信猫。该硬件有对应的二次开发类库，开发很简单。直接将引用方法封装成一个类的静态方法。用的时候直接调用就可以了。(直接贴出代码)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div  id="highlighter_422310"&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&lt;a  title="view source" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#viewSource" highlighterid="highlighter_422310" commandname="viewSource"&gt;view source&lt;/a&gt; &#xD;
&lt;div &gt;&#xD;
&lt;object id="highlighter_422310_clipboard" title="copy to clipboard" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash" height="16" width="16" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;&#xD;
&lt;param name="_cx" value="423"   /&gt;&lt;param name="_cy" value="423"   /&gt;&lt;param name="FlashVars" value=""   /&gt;&lt;param name="Movie" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="Src" value="http://common.cnblogs.com/flash/clipboard.swf"   /&gt;&lt;param name="WMode" value="Transparent"   /&gt;&lt;param name="Play" value="0"   /&gt;&lt;param name="Loop" value="-1"   /&gt;&lt;param name="Quality" value="High"   /&gt;&lt;param name="SAlign" value=""   /&gt;&lt;param name="Menu" value="0"   /&gt;&lt;param name="Base" value=""   /&gt;&lt;param name="AllowScriptAccess" value="always"   /&gt;&lt;param name="Scale" value="ShowAll"   /&gt;&lt;param name="DeviceFont" value="0"   /&gt;&lt;param name="EmbedMovie" value="0"   /&gt;&lt;param name="BGColor" value=""   /&gt;&lt;param name="SWRemote" value=""   /&gt;&lt;param name="MovieData" value=""   /&gt;&lt;param name="SeamlessTabbing" value="1"   /&gt;&lt;param name="Profile" value="0"   /&gt;&lt;param name="ProfileAddress" value=""   /&gt;&lt;param name="ProfilePort" value="0"   /&gt;&lt;param name="AllowNetworking" value="all"   /&gt;&lt;param name="AllowFullScreen" value="false"   /&gt;&lt;/object&gt;&lt;/div&gt;&lt;a  title="print" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#printSource" highlighterid="highlighter_422310" commandname="printSource"&gt;print&lt;/a&gt;&lt;a  title="?" style="width: 16px; height: 16px" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html#about" highlighterid="highlighter_422310" commandname="about"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;[DllImport(&lt;/code&gt;&lt;code &gt;"GSMMultiPort.dll"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;EntryPoint = &lt;/code&gt;&lt;code &gt;"GSMModemInit"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CharSet = CharSet.Ansi, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CallingConvention = CallingConvention.StdCall)] &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;public&lt;/code&gt; &lt;code &gt;static&lt;/code&gt; &lt;code &gt;extern&lt;/code&gt; &lt;code &gt;bool&lt;/code&gt; &lt;code &gt;GSMModemInit( &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;device, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;baudrate, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;initstring, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;charset, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;bool&lt;/code&gt; &lt;code &gt;swHandshake, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;sn); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;//发送短信息 &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;[DllImport(&lt;/code&gt;&lt;code &gt;"GSMMultiPort.dll"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;EntryPoint = &lt;/code&gt;&lt;code &gt;"GSMModemSMSsend"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CharSet = CharSet.Ansi, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CallingConvention = CallingConvention.StdCall)] &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;public&lt;/code&gt; &lt;code &gt;static&lt;/code&gt; &lt;code &gt;extern&lt;/code&gt; &lt;code &gt;bool&lt;/code&gt; &lt;code &gt;GSMModemSMSsend( &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;device, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;serviceCenterAddress, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;int&lt;/code&gt; &lt;code &gt;encodeval, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;text, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;int&lt;/code&gt; &lt;code &gt;textlen, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;phonenumber, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;bool&lt;/code&gt; &lt;code &gt;requestStatusReport); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;//取得错误信息&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;[DllImport(&lt;/code&gt;&lt;code &gt;"GSMMultiPort.dll"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;EntryPoint = &lt;/code&gt;&lt;code &gt;"GSMModemGetErrorMsg"&lt;/code&gt;&lt;code &gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CharSet = CharSet.Ansi, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;CallingConvention = CallingConvention.StdCall)] &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code &gt;public&lt;/code&gt; &lt;code &gt;static&lt;/code&gt; &lt;code &gt;extern&lt;/code&gt; &lt;code &gt;string&lt;/code&gt; &lt;code &gt;GSMModemGetErrorMsg(&lt;/code&gt;&lt;code &gt;string&lt;/code&gt; &lt;code &gt;device);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在完成功能后，部署，运行效果不错。感觉这个功能虽然很小。但是用到的知识可不少，感觉还是有所收获的。毕竟术业有专攻，每个人在从事的行业开发中专注的技术也是有限的。多学点各个方面的知识对自己的成长还是很有好处的。哈哈.〔啰嗦了〕。共同学习吧&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/1798301.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2010/08/12/1798301.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2010/07/30/1788942.html</id><title type="text">C# WinForm开发系列 - 文章索引 （转自peterzb）</title><summary type="text">作者：peterzb（个人开发历程知识库 - 博客园）出处：http://www.cnblogs.com/peterzb/文章版权归本人所有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则保留追究法律责任的权利。 原文地址：http://www.cnblogs.com/peterzb/archive/2009/06/14/1502918.html找到不错的c# w...</summary><published>2010-07-30T09:41:00Z</published><updated>2010-07-30T09:41:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2010/07/30/1788942.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2010/07/30/1788942.html"/><content type="html">&lt;p&gt;作者：&lt;a title="欢迎访问peterzb的技术博客" href="http://peterzb.cnblogs.com/" target="_blank"&gt;peterzb&lt;/a&gt;（&lt;a title="欢迎访问peterzb的技术博客" href="http://peterzb.cnblogs.com/" target="_blank"&gt;个人开发历程知识库 - 博客园&lt;/a&gt;）&lt;br /&gt;出处：&lt;a title="欢迎访问peterzb的技术博客" href="http://www.cnblogs.com/peterzb/" target="_blank"&gt;http://www.cnblogs.com/peterzb/&lt;/a&gt;&lt;br /&gt;文章版权归本人所有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则保留追究法律责任的权利。 &lt;/p&gt;&#xD;
&lt;p&gt;原文地址：&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/14/1502918.html"&gt;http://www.cnblogs.com/peterzb/archive/2009/06/14/1502918.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;找到不错的c# winform开发的。留下&lt;/p&gt;&#xD;
&lt;p&gt;该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm一直比较感兴趣,这几年积累收藏了不少文章,现在整理一下分类推荐给大家,避免大家浪费大把的时间去找这方面的资料,因为找资料也是一件很累的事情,Google,Baidu一下,不断的点击,不断翻阅大量的博客文章,查找自己所需的.这个系列初步打算分入门介绍(开发环境搭建,.net基础概念), 基本控件使用(Label/Button/TextBox/ListBox/ListView/ProgressBar), &lt;strong&gt;DataGrid/DataGridView&lt;/strong&gt;, TreeView, ComboBox, &lt;strong&gt;ADO.Net&lt;/strong&gt;(DataTable/DataSet/SQL Server),&lt;strong&gt;GDI+&lt;/strong&gt;(图表ZedGraph/OWC等使用,图像处理,控件自定义绘制),打印, &lt;strong&gt;多线程&lt;/strong&gt;(委托,事件,线程,异步处理,BackgroundWorker), XML/XSLT/XPATH,&lt;strong&gt;报表&lt;/strong&gt;(RDLC,Excel,PDF,Word),File,&lt;strong&gt;Socket&lt;/strong&gt;/WCF/Rometing/WebService, 打印, 剪贴板拖放操作,&amp;nbsp;正则表达式以及其它方面.文章及相关代码大部分搜集自网络,版权属于原作者!(&lt;span style="font-size: 9pt; color: black; font-family: 宋体"&gt;我的弯路大家可以避免，&lt;/span&gt;&lt;font face="Verdana" color="black" size="1"&gt;&lt;span style="font-size: 9pt; color: black; font-family: Verdana"&gt; &lt;/span&gt;&lt;/font&gt;&lt;font face="宋体" color="black" size="1"&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体"&gt;我的经验大家可以分享。&lt;/span&gt;&lt;/font&gt;) &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a  href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491597.html"&gt;C# WinForm开发系列 - 开篇&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;基础 - 常用控件 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/07/1498173.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - CheckBox/Button/Label/ProgressBar&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/07/1498293.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - TextBox&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - ComboBox&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/08/1499131.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - TreeView&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/02/1494894.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - Color Pickers/DigitalClock/Calendar/LEDControl&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="ListBox/ListView控件使用" href="http://www.cnblogs.com/peterzb/archive/2009/06/18/1505424.html" target="_blank"&gt;C# WinForm开发系列 - ListBox/ListView/Panel&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-06-18 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/28/1512889.html" target="_blank"&gt;C# WinForm开发系列 - ToolBar/OutlookBar/Tab/Wizard&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-06-28 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/30/1514336.html" target="_blank"&gt;C# WinForm开发系列 - Form/Window&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-06-30 已完成&lt;/span&gt; &lt;strong&gt;&lt;span style="color: red"&gt;推荐&lt;/span&gt;&lt;/strong&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.html"&gt;C# WinForm开发系列 - WebBrowser&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-12 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1521791.html"&gt;C# WinForm开发系列 - Controls&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-12 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/21/1507880.html"&gt;&lt;font color="#223355"&gt;C# WinForm开发系列 - Open-Source Controls&lt;/font&gt;&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-06-21 已完成&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;控件 - Grid &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491697.html"&gt;C# WinForm开发系列 - DataGrid&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;[&lt;strong&gt;&lt;span style="color: red"&gt;推荐&lt;/span&gt;&lt;/strong&gt;]&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html"&gt;C# WinForm开发系列 - DataGridView&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491629.html"&gt;C# WinForm开发系列 - DataGrid/DataGridView&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491781.html"&gt;C# WinForm开发系列 - Grid Controls&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491545.html"&gt;OutlookGrid：以Outlook样式分组和排列数据项&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;&lt;font color="#223355"&gt;高级 - 专题应用 &lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;[&lt;strong&gt;&lt;span style="color: red"&gt;推荐&lt;/span&gt;&lt;/strong&gt;]&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/10/1500273.html"&gt;C# WinForm开发系列 - Thread/Delegate/Event&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/27/1532288.html" target="_blank"&gt;C# WinForm开发系列 - 图形图像处理&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/19/1526555.html" target="_blank"&gt;C# WinForm开发系列 - GDI+ &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/21/1527415.html" target="_blank"&gt;C# WinForm开发系列 - OWC&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/19/1526726.html" target="_blank"&gt;C# WinForm开发系列 - ZedGraph&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/21/1528246.html" target="_blank"&gt;C# WinForm开发系列 - Chart Controls&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/18/1505438.html" target="_blank"&gt;C#绘制立体三维饼状图（超酷）&lt;/a&gt;&amp;nbsp;&amp;nbsp; [ &lt;span style="color: red"&gt;2009-06-18 添加&lt;/span&gt; ]&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/22/1529021.html" target="_blank"&gt;Web开发系列 - VML&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/25/1531087.html" target="_blank"&gt;Web开发系列 - FusionCharts&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/articles/1289702.html" target="_blank"&gt;[转载] FusionCharts的研究 &lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/27/1531638.html"&gt;Web开发系列 - EcSide&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/27/1531910.html"&gt;Web开发系列 - Web Chart&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;h2 style="padding-bottom: 4px; padding-top: 4px"&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1521880.html"&gt;C# WinForm开发系列 - ADO.NET&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 摘要: ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft,希望 表明,这是在.NET编程环境中优先使用的数据访问接口. 它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持 RICH XML.由于传送的数据都是XML格式的，因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上，接受数据的组件不一定要是ADO .NET组件，它可以是基于一个Microsoft Visual Studio的解决方案，也可以是任何运行在其它平台上的任何应用程序。 &amp;nbsp;&amp;nbsp;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1521880.html"&gt;阅读全文&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="C#文件操作" href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1521799.html" target="_blank"&gt;C# WinForm开发系列 - File&lt;/a&gt; ( &lt;span style="color: red"&gt;2009-07-12 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="水晶报表等使用" href="http://www.cnblogs.com/peterzb/archive/2009/07/11/1521331.html" target="_blank"&gt;C# WinForm开发系列 - Report&lt;/a&gt;(RDLC,Excel,PDF,Word,Crystal Report,SQL Reporting Services &lt;span style="color: red"&gt;2009-07-11 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/06/1517395.html" target="_blank"&gt;C# WinForm开发系列 - Excel&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-06 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/06/1517399.html" target="_blank"&gt;C# WinForm开发系列 - Word&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-06 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/05/1517364.html" target="_blank"&gt;C# WinForm开发系列 - PDF&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-05 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/08/1519489.html" target="_blank"&gt;C# WinForm开发系列 - RDLC &lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-08 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/08/1519527.html"&gt;C# WinForm开发系列 - Reporting Services&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-08 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/11/1521325.html"&gt;C# WinForm开发系列 - Crystal Report&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-11 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2006/04/23/382841.html"&gt;DB--&amp;gt;Excel/Word[DLL]&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;h2 style="padding-bottom: 4px; padding-top: 4px"&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1522142.html"&gt;C# WinForm开发系列 - Print&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 摘要: 收集了一些打印方面文章, 包含WinForm, Asp.Net中使用, 有结合Excel/Word, 也有直接使用报表工具打印功能, Web打印采用css结合WebBrowse控件.(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! )&amp;nbsp;&amp;nbsp;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/12/1522142.html"&gt;阅读全文&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/04/1516988.html" target="_blank"&gt;C# WinForm开发系列 - XML/XSLT/XPATH&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-04 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;摘要: XML在WinForm, Asp.Net, Java, AJAX开发等方面应用, 以及对XML文档基本操作,如XPath检索节点. 当前XML被广泛应用与配置保存, 简单数据存储, 跨平台数据传输, 其身影活跃于Web Services, AJAX开发技术应用中.&amp;nbsp;&amp;nbsp;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/04/1516988.html"&gt;阅读全文&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2006/04/24/383735.html"&gt;xslt的简单使用[xml--&amp;gt;html]&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2006/04/24/384008.html"&gt;使用xml+asp.net打造简单的站点导航&amp;amp;管理站点友情链接&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/04/1516844.html" target="_blank"&gt;C# WinForm开发系列 - Regular Expression&lt;/a&gt;&amp;nbsp;( &lt;span style="color: red"&gt;2009-07-04 已完成&lt;/span&gt; )&lt;/p&gt;&#xD;
&lt;p&gt;摘要: &amp;nbsp;&amp;nbsp;&amp;nbsp; 正则表达式用于字符串处理、表单验证等场合，实用高效。现将一些常用的表达式文章收集于此，以备不时之需。正则表达式能让更多的复杂的搜索和替换功能变成 简单的操作。基本说来，正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。主要有4个功能, 分别为查询匹配(Find, Match), 提取, 分割(Split)及替换删除(Replace).&amp;nbsp; &lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/04/1516844.html"&gt;阅读全文&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/07/03/1515950.html" target="_blank"&gt;C# WinForm开发系列 - &lt;strong&gt;Socket&lt;/strong&gt;/WCF/Rometing/Web Services&lt;/a&gt;&amp;nbsp; ( &lt;span style="color: red"&gt;2009-07-03 已完成&lt;/span&gt; )&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491603.html"&gt;[转载]C#实现的可复用Socket接收/发送共享缓冲区类&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491605.html"&gt;[转载]异步Socket服务器与客户端（An Asynchronous Socket Server and Client）&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/29/1491609.html"&gt;[转载]可扩展多线程异步Socket服务器框架EMTASS 2.0&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/07/1498241.html"&gt;[转载]DrawMe - 使用WPF/WCF创建的网络白板聊天程序&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;补充 - 其它专题 &lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - Visual Studio&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - Tools&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 疑难杂症&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 串口通信/GPS/GIS应用开发&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - P/Invoke, WMI等&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 控件开发与使用&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 特殊应用&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 书籍介绍&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 多媒体/流媒体应用&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 系列文章&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 资源集锦&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 性能优化&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 安装部署&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 概述篇 &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;C# WinForm开发系列 - 总结篇&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;资源 - .Net学习&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/24/1488497.html"&gt;.net学习资料&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/12/1455256.html"&gt;Windows Mobile入门&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/13/1502771.html"&gt;Windows Mobile开发文章收藏&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/09/1499999.html"&gt;Oracle开发与使用文章收藏&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/" target="_blank"&gt;博客园&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://community.csdn.net/" target="_blank"&gt;CSDN论坛&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/default.aspx" target="_blank"&gt;&lt;font color="#1d58d1"&gt;MSDN 中文网站&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.yesky.com/SoftChannel/72342367549521920/index.shtml" target="_blank"&gt;&lt;font color="#1d58d1"&gt;天极网开发者网络&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cs-open.com/index.html" target="_blank"&gt;&lt;font color="#1d58d1"&gt;C#开源资源大全&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://windowsclient.net/" target="_blank"&gt;&lt;font color="#1d58d1"&gt;Windows Forms .NET&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.syncfusion.com/FAQ/WindowsForms/Default.aspx" target="_blank"&gt;&lt;font color="#1d58d1"&gt;Windows Forms FAQ&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="font-weight: bold; text-align: center"&gt;Others &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/31/1493239.html"&gt;也用C#做个视频监控客户端来玩玩&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/29/1513002.html"&gt;手机视频监控系统开发系列文章&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/05/16/1458085.html"&gt;流媒体与视频监控开发相关博客文章系列收集&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/13/1502497.html"&gt;视频监控相关文章&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/25/1510814.html"&gt;移动开发资源集锦&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/peterzb/archive/2009/06/12/1501921.html"&gt;Symbian开发系列 - 入门篇&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dagon007/aggbug/1788942.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dagon007/archive/2010/07/30/1788942.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2009/09/11/1564456.html</id><title type="text">非常经典的网络蜘蛛示例，我是转载在这里的</title><summary type="text">非常经典的网络蜘蛛示例，我是转载在这里的原文：http://www.csharp.net.cn/post/浅谈文章采集,就拿博客园热门文章举例.html以前写了篇&amp;#8220;百度视频采集"的思路简介，看到唯一一个人留言希望我总结一下新闻采集。今天就拿博客园的热门文章采集做个例子。说明前我得声明一点，经过在博客园混了几个月后，发现博客园首页发布的文章一般都是高手，很有参考价值。可我是一个新手，我请...</summary><published>2009-09-10T18:16:00Z</published><updated>2009-09-10T18:16:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564456.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564456.html"/></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2009/09/11/1564454.html</id><title type="text">（转）三种模拟自动登录和提交POST信息的实现方法</title><summary type="text">原文转自：http://www.csharp.net.cn/post/三种模拟自动登录和提交POST信息的实现方法.html网页自动登录（提交Post内容）的用途很多，如验证身份、程序升级、网络投票等，以下是用C#实现的方法。 网页自动登录和提交POST信息的核心就是分析网页的源代码（HTML），在C#中，可以用来提取网页HTML的组件比较多，常用的用WebBrowser、WebClient、Ht...</summary><published>2009-09-10T18:06:00Z</published><updated>2009-09-10T18:06:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564454.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564454.html"/></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2009/09/11/1564452.html</id><title type="text">（转自Timon's wang blogs）C#实现web信息自动抓取</title><summary type="text">原文转自：http://www.csharp.net.cn/post/C实现web信息自动抓取.html主要为了学习一下相关的网络蜘蛛，为自己获取信息使用背景随着Internet的普及，网络信息正以极高的速度增长，在这么多数据中找到自己需要的信息是一件很繁琐的事情，找到需要的信息后如何获取也是件麻烦的事。这就需要Internet信息抓取程序来代替人工的操作。所谓Internet信息抓取程序，就是程...</summary><published>2009-09-10T17:43:00Z</published><updated>2009-09-10T17:43:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564452.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2009/09/11/1564452.html"/></entry><entry><id>http://www.cnblogs.com/dagon007/archive/2009/09/06/1561189.html</id><title type="text">（转）c#操作注册表大全</title><summary type="text">1.打开键//using Microsoft.Win32;RegistryKey rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfigconst string strSubKey = %%1; //@"SOFTWA...</summary><published>2009-09-06T02:28:00Z</published><updated>2009-09-06T02:28:00Z</updated><author><name>沉默天蝎的.net学习汇集</name><uri>http://www.cnblogs.com/dagon007/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dagon007/archive/2009/09/06/1561189.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dagon007/archive/2009/09/06/1561189.html"/></entry></feed>
