2. UDP
UDP协议是一种无连接的,不可靠的通讯模式,所谓不可靠,即它不保证数据能准确的发送到对方,因此使用它的时候必须考虑数据包丢失的情况. 使用UDP的场合一般是对数据包能否到达对方没有严格要求,只在乎数据能快速的到达对方.据我使用UDP协议编程的经验,UDP传输对服务器的压力最低,也就是服务器的开销最少,这对于需要处理海量连接的服务器而言,优势不言而喻.
由于UDP协议的无连接传输,也就是UDP协议在发送数据包之前不需要和对方建立连接,所以在使用UDP协议传输数据时要考虑数据确认的问题,因为发送方并不清楚目的计算机是否接收到了数据,或是数据包在传输过程中被丢弃.
UDP协议的通讯过程十分简单:发送方直接将数据发送到目标计算机的地址和端口即可.在C#中,UDP Socket在发送数据之前需要绑定一个本地端口或者用Connect方法连接目标计算机端口(事实上,这个方法并没有进行连接,它只是决定之后用这个Socket发送时是否需要提供远程主机的地址端口).
二.C#中的与Socket通讯相关的命名空间和类
1.System.Net命名空间:
这个命名空间提供了通讯协议的接口.
.Net Framwork SDK文档对这个命名空间的描述:System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础。可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。
2.System.Net.Sockets命名空间:
这个命名空间提供了构造Socket需要的类.
.Net Framwork SDK文档对这个命名空间的描述:
System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现。
TCPClient、TCPListener 和 UDPClient 类封装有关创建到 Internet 的 TCP 和 UDP 连接的详细信息。
3.Socket编程常用的类:
(1) IPAddress类:
IPAddress类实现对IP地址的对象化封装.
常用方法和常量:
a.Parse:静态方法.转换字符串形式的IP地址为IPAddress对象:
IPAddress adress = IPAddress.Parse("127.0.0.1");
b.Any:类常量:代表本地所有地址,相当于IP地址的"0.0.0.0",Socket进行监听时,使用此地址Socket将监听本地计算机所有的IP地址.
(2) IPEndPoint类:
IPEndPoint类是抽象类EndPoint的实现,它封装了IP地址节点信息,使用Socket连接,发送数据都需要用到这个类.
a.IPEndPoint构造函数:
public IPEndPoint(IPAddress, int);
待续..
评论