首先介绍相关知识。
UDP协议
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
下面是UDP与TCP的一些区别:
**A)**UDP是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。
**B)**UDP是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。
**C)**UDP是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。
**D)**UDP没有拥塞控制。因此UDP协议的发送速率不送网络的拥塞度影响。
**E)**UDP支持一对一、一对多、多对一和多对多的交互通信。
**F)**UDP的头部占用较小,只占用8个字节。
阻塞与非阻塞
简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
举个栗子:
你问书店老板有没有《深入浅出MFC》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果;如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。
IPAddress类
提供网际协议地址
IPAddress.Broadcast 字段
提供IP广播地址,此字段为只读。
语法:public static readonly IPAddress Broadcast
Broadcast字段等效于以点分隔的四部分表示法格式的255.255.255.255
UdpClient类
提供用户数据报(UDP)网络服务
语法:public class UdpClient : IDisposable
UdpClient类提供了一些简单的方法,用于在阻止模式下发送和接受无连接UDP数据报。
您可以选择使用下面两种方法之一来建立默认远程主机: