C#中的Socket和UdpClient类是什么关系的?
关系是否可以通过其中一种设计模式来描述?
答案 0 :(得分:18)
UdpClient是使用UDProtocol的套接字包装器。它类似于TCPClient,它所做的只是提供另一层抽象,使网络编程变得更加容易。
更新
另外,我从来没有真正理解为什么有些人更喜欢UDPClient和TCPClient而不是使用基本套接字类。它可以给你一个充分的开始,在.NET中学习网络编程而不会有太多的痛苦,但我觉得你拥有的抽象层越多,你就越不了解底层的内容。我觉得从长远来看,在代码中调试复杂或奇怪的行为问题会变得更加困难,因为正在发生的很多事情对你来说是隐藏的,因为你是抽象的高层。甚至.NET Socket类也是一个抽象层,因为它是本机(Berkeley套接字接口)套接字的包装器,我从来没有真正感觉到例如本机C ++中的网络编程也很困难。
但是,如果您遵循标准,指南和编写高质量代码,您可能根本没有任何问题(减去环境和环境问题),但我总是建议学习基础Socket类,以便您更好地理解.NET联网。我想这一切都取决于你对学习框架的兴趣有多深,并成为这方面的专家。
简而言之,根据您的要求和必要性,任何一种方式都是正常的,但我总是建议您在任何一天学习抽象。
答案 1 :(得分:6)
根据丹德森的回应,听起来a little like the Facade pattern。
外观可以:使软件库更易于使用,理解和测试,因为外观具有便捷的常见任务方法;
答案 2 :(得分:2)
UdpClient
只是一个便利类,可以更轻松地使用套接字。