
C#
wzd24
从事.NET开发10年!
展开
-
.NET Socket开发之异步Socket
在基于.NET的网络服务端的开发中,我们用到和听到的最多的恐怕就是异步Socket了。异步Socket的性能比同步高出很多,但是编写代码比较复杂。因此异步Socket也是网络上讨论比较多的话题。今天,我们就来讨论一下如何用异步Socket开发网络应用。在此之前我们先讨论两个问题。一、异步Socket是如何工作的:那异步Socket是如何工作的呢?我以接收一条消息来说明这个问题。首先,程原创 2007-10-12 10:30:00 · 4998 阅读 · 4 评论 -
.net 3.5平台上的Socket开发
其实这篇文章在一年前就应该写了,不过一直觉得自己没空,一拖就拖到现在。先对大家说句对不起了。 在之前的文章中,我们讲了如何在.NET 2.0下面开发Socket项目。其中的异步Socket让我们得以很轻松的在.NET中开发高性能服务端应用。但是,在实际应用中我们还是发现了一些问题的存在,如:我们在每一次操作的过程中都要创建一个IAsyncResult上下文对象,如果数据通讯很频繁的话原创 2009-03-16 14:53:00 · 3641 阅读 · 1 评论 -
Socket开发之通讯协议及处理
在Socket应用开发中,还有一个话题是讨论的比较多的,那就是数据接收后如何处理的问题。这也是一个令刚接触Socket开发的人很头疼的问题。因为Socket的TCP通讯中有一个“粘包”的现象,既:大多数时候发送端多次发送的小数据包会被连在一起被接收端同时接收到,多个小包被组成一个大包被接收。有时候一个大数据包又会被拆成多个小数据包发送。这样就存在一个将数据包拆分和重新组合的问题。那么如何原创 2007-12-24 00:23:00 · 6565 阅读 · 21 评论 -
.NET Socket开发之同步Socket实现两例
今天,我们来讲一下在.NET 网络应用程序开发中同步Socket的应用,很多人认为在网络应用的服务端Socket不应该使用同步Socket。是的,在大多数情况下是这样的,但是也有一些场景下我们使用同步Socket可能会得到更的结果。如在下面的两种场景下我们便可以考虑使用同步的Socket。一、客户端数量比较少:数量比较少是指会同时连接到服务器的客户端数量一般在50人以下。这种情况下我们原创 2007-10-12 10:47:00 · 2355 阅读 · 4 评论 -
在C#中实现Socket端口复用
一、什么是端口复用: 因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分。这种多重绑定便称之为端口复用。二、我们如何实现Socket端口复用: 其实我们要实现端口复用很简单,我们只要使用SetSocketOption函数设置Socket选项就可以了。MSDN是这样解释的:Socke原创 2007-10-12 10:40:00 · 2305 阅读 · 0 评论 -
在.NET中基于Windows消息的IPC实现
一、什么是IPCIPC(Inter process Communication)就是“进程间通讯”。我们都知道,在windows系统中,各个应用程序(进程)之间常常需要交换、传递数据,这就要解决进程间的数据通信问题。在最初的16位Windows3.x系统中,所有Windows应用程序共享单一地址,任何进程都能够对这一共享地址空间的数据进行读写操作。 随着Windwos98、Windows原创 2007-10-12 10:43:00 · 1903 阅读 · 0 评论 -
在C#中实现类似C++函数指针数组的功能
在大家开发网络通讯软件的时候,应该都碰到过这种情况,在定义好通讯协议后要在程序中实现协议相应的功能。如:一个聊天程序有如下定义:1……登陆2……获取好友列表3……修改自己资料……N……退出每个功能由如下函数实现: 登陆Void Login(UserIinfouser,Messagemsg);获取好友列表void GetFriendList(UserInf原创 2007-10-12 10:49:00 · 1834 阅读 · 0 评论 -
让.NET Remoting更快些-IPCChannel的实现
IPCChannel是.NET Framework 2.0 里面新增的,它使用 Windows 进程间通信 (IPC) 系统在同一计算机上的应用程序域之间传输消息。在同一计算机上的应用程序域之间进行通信时,IPC 信道比 TCP 或 HTTP 信道要快得多。但是IPC只在本机应用之间通信。所以,在客户端和服务端在同一台机器时,我们可以通过注册IPCChannel来提高Remoting的性能。但如果原创 2007-10-12 10:46:00 · 3947 阅读 · 0 评论 -
在C#中利用Keep-Alive处理Socket网络异常断开的方法
最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接。服务端采用C#开发,客户端采用Delphi开发。在服务端开发中我碰到了各种各样的网络异常断开现象。在处理这些异常的时候有了一些心得,现在写出来和大家分享一下。那网络异常断开原因主要有那些呢?归纳起来主要有以下两种:1、客户端程序异常。 对于这种情况,我们很好处理,因为客户端程序异常退出会在服务端引发Connectio原创 2007-10-12 10:37:00 · 4658 阅读 · 7 评论 -
浅析C#编程中的内存管理
C#编程的一个优点是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作。虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解C#的内存管理。本文主要介绍给变量分配内存时计算机内存中发生的情况。C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在堆栈中,而引用类型存储在内存的托管堆中。1、内转载 2009-03-16 15:41:00 · 1110 阅读 · 1 评论