![](https://csdnimg.cn/release/download_crawler_static/86162480/bg4.jpg)
1)如果数据从外部源传输到程序中,这就是读取流。
2) 如果数据从程序传输到外部源,这就是写入流.
外部源常常是一个文件,但也不完全都是文件,它还可以是:
1) 网络,使用一定的网络协议与网络上其它计算机或终端交换数据。
2) 一个指定的管道。
3) 一块内存区域。
2。5 同步、异步、阻塞和非阻塞
同步(synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受
方响应,就接着发送下一个数据包。
异步(asynchronous):异步方式就是当发送方发送一个数据包以后,一直等
到接受方响应后,才接着发送下一个数据包。
阻塞(Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此
套节字就一直阻塞在网络调用上,比如调用 StreamReader 类的 Readlin ( )方法读
取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此 Readlin ( )方
法将一直挂在调用上,直到读到一些数据,此函数调用才返回。
非阻塞(Unblock):指在执行此套接字的网络调用时,不管是否执行成功,
都立即返回。同样调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中数
据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。
在 Windows 网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。
平常所说的 C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式
的。
其实在用 C#进行网络编程中,我们并不需要了解什么同步、异步、阻塞和
非阻塞的原理和工作机制,因为在.Net FrameWrok SDK 中已经已经把这些机制给
封装好了。
3.系统总体设计 3。1 需求分析
软件针对局域网内部用户,实现用户间的即时通信。需要分别实现服务器端
和客户端的软件设计。
服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送
给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在
新信息。
客户端发起主动连接,向服务器请求登录或者注册。客户端可以修改昵称,
可以加已知用户为好友(类似于 MSN 的好友添加功能)。客户端之间可以发起
P2P 模式的聊天,可以传送文件。
3。2 系统基本架构
基于 C/S 架构的即时通信软件便于对用户信息进行统一管理和保存,面向特
定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信
息传递是采用 P2P 模式的,服务器只负责用户的注册,登录和用户在线状态的
检验。基本结构如图:
第 4 页 共 20 页