阅读背景:本文针对有C#的初学者而写的,主要讲解如何利用C#进行网络编程。如果你已经有一些网络编程的经验(只需要懂得网络编程的基本常识即可),并且理解C#的基本语法,那么这篇文章可以很快地带你进入C#网络编程的世界。如果你的基础不好,也不要紧,我相信这篇文章也会有你需要的内容。
网络编程基础复习:

相信很多人看到图1应该不会陌生,这是一个利用TCP进行通信的经典模型图。我想大家都应该把这张图记在心中。在此我就不讲述上图中每个API的意思了,百度一下,你就知道。我想说的是,难道你不觉得这么编程很累吗? 我们需要去调用每个API函数,然后每个判断返回值是多少,如果你忘记了哪个API的参数形式还得去查MSDN,这种时间花费是巨大的,尤其当你做应用层的快速开发时。
图2是利用UDP通信时的编程基本模型,这个模型较为简单,但是应用极为广泛,相比TCP而言,我本人觉得利用UDP通信是一门更为高深的技术,因为它是无连接的,换言之,它的效率与灵活度就更高些。

图2. UDP编程基本模型
在此我补充一点,关于何时利用TCP通信、何时利用UDP通信的问题。他们的特性其实已经决定了他们的适用范围。在进行大数据量、持续连接时,我们使用TCP,例如FTP协议;而在进行小规模数据、突发性高的通信时,我们使用UDP,例如聊天程序。但是,这并不是绝对的事情。例如流媒体通信,它是大数量、持续的通信,但是使用的是UDP协议,为什么呢?——因为我们不关心丢失的帧,人的肉眼是无法识别出少量的帧丢失的。那么使用UDP通信就可以大幅度提高效率,降低网络负载。
C#之TCP编程
- 如何创建一个套接字&#