木子屋 Dnawo's BLOG

分类:Win编程

共 358 篇

Http 请求头中的 Proxy-Connection[转]

平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头。之前一直没去了解什么情况下会产生它,也没去了解它有什么含义。最近看完《HTTP 权威指南》第四章「连接管理」和第六章「代理」之后,终于搞明白了这是因为给浏览器设置了代理(Proxy)。而神器 Fiddler 的抓包原理就是让浏览器请求走它开的本地代理,所以开了 Fiddler 必然会产生这个请求头。 代理改变了什么? 为了彻底弄清这个问题,我们先来看下设置浏览器代理之后,HTTP 请求头有那些变化。下面分别是设置代理前后访问同一 URL 的请求头(省略了无关内容): GET / HTTP/1.1 Host: www.example.com…

ManualResetEvent类用法小结

假设有一个程序中调用了三个异步方法,代码如下: 执行结果如下图所示: 也就是说,异步方法的执行顺序是不固定的,但有时我们希望它们能按顺序执行,修改代码如下: 看着有没有感觉很乱?能不能让代码既像开始那样有条理,又能按顺序执行呢?ManualResetEvent类出场了:

BeginInvoke和EndInvoke方法学习小结

BeginInvoke和EndInvoke的作用是把一个同步方法改成异步执行,改造过程主要有3步: ·增加一个与方法对应的委托; ·增加一个AsyncCallback委托类型的回调函数(在函数体调用EndInvoke获取返回值); ·将方法的参数、回调函数和委托变量传给BeginInvoke; 下面是一个简单的示例: 参考很多类异步方法命名方式BeginXXX和EndXXX,对上面类稍做修改: BeginTodo方法返回类型为IAsyncResult,网上看到有人这么调用:

C#线程编程BeginInvoke和EndInvoke方法[转]

一、线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示。 如果任务管理器没有“线程数”列,可以【查看】>【选择列】来显示“线程计数”列。从上图可以看出,几乎所有的进程都拥有两个以上的线程。从而可以看出,线程是提供应用程序性能的重要手段之一,尤其在多核CPU的机器上尤为明显。 二、用委托(Delegate)的BeginInvoke和EndInvoke方法操作线程…

C#使用Socket发送和接收TCP数据示例(异步版)

重要说明:Receive的ReceiveTimeout对EndReceive不起作用,所以必须是双方约定一个结束符,或者发送方发送完毕立即关闭Socket来结束传输。 运行服务器监听数据: 发送和接收TCP数据: 参考资料 .Socket 类:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket(v=vs.80).aspx .Socket 方法:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket_methods(v=vs.80).aspx…

C#使用Socket发送和接收TCP数据示例

重要说明:Receive通常是双方约定一个结束符,或者发送方发送完毕立即关闭Socket,否则只能通过ReceiveTimeout来结束Receive(不一定可靠)。 运行服务器监听数据: 发送和接收TCP数据: Receive接收字节数测试 运行结果: Receive length: 1024 Receive length: 1024 Receive length: 832 Receive length: 1024 Receive length: 1024 Receive length: 832 Receive length: 1024 Receive length: 416 Receive length: 1024…

WEB服务器和代理服务器接收的数据比较

1.WEB服务器 GET /default.asp HTTP/1.1 Host: www.mzwu.com:80 Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 Accept-Encoding: gzip,deflate,sdch…

InstallShield 2010制作程序安装包exe和msi文件区别

如上图所示,InstallShield 2010制作程序安装包会生成exe和msi两个文件,测试了下,两个文件都可以安装应用程序,它们有什么区别呢? 测试一 双击Setup.exe开始安装程序,在Windows任务管理器观察进程变化: 根据观察结果可知:Setup.exe启动Setup.msi来安装应用程序。 测试二 在Redistributables钩选Microsoft .NET Framework 2.0 SP1,选择生成单个msi文件: 编译出错,错误信息如下: Your project contains InstallShield prerequisites. A Setup.exe setup launcher is required if you are building a release that includes InstallShield prerequisites. Change your release settings to build Setup.exe, or remove the prerequisites from your project.…

InstallShield 2010在线安装.NET Framework 2.0 SP1示例

第一步:在Redistributables钩选Microsoft .NET Framework 2.0 SP1和Windows Installer 3.1 第二步:选择在线下载.NET Framework 2.0 SP1(Download From The Web) 第三步:调整Microsoft .NET Framework 2.0 SP1和Windows Installer 3.1安装顺序 安装效果: 常见问题 问:为什么Windows XP SP2下安装.NET Framework 2.0 SP1总是失败? 答:这是因为安装.NET Framework 2.0 SP1需要Windows Installer 3.1,Windows XP SP2缺少Windows Installer 3.1导致的,所以在Redistributables两个都要勾选并调整好顺序。