上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 30 下一页
摘要: 在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息。但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念:将字符序列转换为字节序列的过程称之为:编码将编码的字节序列转换为字符序列的过程称之为:解码例如:对于Unicode字符来说,编码是指将一组Unicode字符转换为一个字节序列的过程,解码就是讲一个编码字节序列转换为一组Unicode字符。目录索引: 1.字符编码基础知识 1.1 ASCII字符集 1.2 非ASCII字符集 1.3 Unicode字符集 ... 阅读全文
posted @ 2013-06-19 06:52 云中雀 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 通过前面的笔记我们可以知道:一个客户端要想发起一次通信,先决条件就是需要知道运行在服务端程序的主机的IP地址是多少,端口号是多少。然后我们才能够通过这个地址向服务器特定的应用程序发送信息。对于网络上的两台计算机来说,用户操作的计算机称为本地主机,与该计算机通信的另一台计算机称为远程主机。识别远程主机依靠两部分组成:一是主机标识,用于识别与本地主机通信的远程主机;二是端口号,用于识别是再和远程主机中的哪个进程通信。阅读目录: 1.获取主机地址信息 2.获取网卡信息和网络检测 2.1 获取网卡信息 2.2 网络流量检测 2.3 网络连接检测 3.参考... 阅读全文
posted @ 2013-06-17 07:13 云中雀 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 计算机程序能够相互联网,相互通信,这使一切都成为可能,这也是当今互联网存在的基础。那么程序是如何通过网络相互通信的呢?这就是我记录这系列的笔记的原因。C#语言从一开始就是为了互联网而设计的,它为实现程序的相互通信提供了许多有用API,这类应用编程接口被称为套接字(Socket)。在开始学习C# Socket之前我们需要先来了解一下基本的术语和概念。阅读目录: 1.计算机网络 2.分组报文 3.协议 3.1 IP协议 3.2 TCP协议 3.2 UDP协议 4.网络地址 4.1 回环地址 5.DNS和本地配置数据库 6.客户端和服务器 7.什么是Sock... 阅读全文
posted @ 2013-06-13 06:57 云中雀 阅读(253) 评论(0) 推荐(0) 编辑
摘要: Oracle DataDirect4.0破解版 阅读全文
posted @ 2013-06-09 17:44 云中雀 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 在上一讲介绍了使用lock来实现线程之间的同步。实际上,这个lock是c#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面C#源代码:public static void MyLock(){ lock (typeof(Program)) { }}上面的代码通过lock语句使MyLock同步,这个方法被编译成IL后,代码如图1所示。从上图被标注的区域可以看到,一条lock语句被编译成调用Monitor的Enter和Exit方法。Monitor在System.Threading命名空间中。lock的功能就相当于直接调用Monitor的... 阅读全文
posted @ 2013-06-08 21:33 云中雀 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 虽然线程可以在一定程度上提高程序效率,但也会产生一些副作用。让我们先看看如下代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Net.Sockets;using System.IO;namespace ConsoleApplication1{ class Increment { private int n = 0; private int max; p... 阅读全文
posted @ 2013-06-06 21:15 云中雀 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程度上消耗服务器的资源。因此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户请求时,就从这些建好的线程中获得线程对象,并处理请求。保存这些线程对象的结构就叫做线程池。 在C#中可以通过System.Threading.ThreadPool类来实现,在默认情况下,ThreadPool最大可建立500个工作线程和1000个I/O线程(根据机器CPU个数和.net framework版本的不同,这些数据可能会有变化)。下面是一个用C#从线程池获得线程的例子:using System;using .. 阅读全文
posted @ 2013-06-05 07:51 云中雀 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 五 判断多个线程是否都结束的两种方法确定所有线程是否都完成了工作的方法有很多,如可以采用类似于对象计数器的方法,所谓对象计数器,就是一个对象被引用一次,这个计数器就加1,销毁引用就减1,如果引用数为0,则垃圾搜集器就会对这些引用数为0的对象进行回收。方法一 线程也可以采用计数器的方法,即为所有需要监视的线程设一个线程计数器每开始一个线程,在线程执行方法中为这个计数器加1,如果某个线程结束(在线程执行的方法最后为这个计数器减1),为这个计数器减1,然后在开始一个线程,按着一定的时间间隔来监视这个计数器,如是总的计数器为0,说明所有的线程都结束了。当然,也可以不用这个监视线程,而在每一个工作线程的 阅读全文
posted @ 2013-06-04 07:02 云中雀 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 一、Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:[ComVisibleAttribute(true)]public delegate void ThreadStart()我们可以通过如下的方法来建立并运行一个线程。using System;using System.Collections.Generic;using System.Linq;using System.Text;usi 阅读全文
posted @ 2013-06-03 07:01 云中雀 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3.线程池4.线程同步基础5.死锁6.线程同步的7种方法7.如何在线程中访问GUI组件一 线程的概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数 阅读全文
posted @ 2013-06-02 10:22 云中雀 阅读(9115) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 30 下一页