首页 新闻 会员 周边

C#网络通信应该用哪个类

0
悬赏园豆:10 [待解决问题]

好像这些类都可以实现客户端与服务器的通信:

TcpClient、UdpClient、HttpWebRequest、WebRequest、HttpClient、Socket、WebClient、WebApi框架

 

有没有高人来解释一下,什么情况下用? 怎么用? 它们之间有何关系?

萨尔的主页 萨尔 | 初学一级 | 园豆:20
提问于:2018-07-03 15:14
< >
分享
所有回答(5)
1

Socket

dudu | 园豆:30948 (高人七级) | 2018-07-03 15:19

大神能否详细点

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2018-07-03 15:32
0

System.Object
  System.MarshalByRefObject
    System.Net.WebRequest
      System.Net.HttpWebRequest

https://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.aspx

System.Object
  System.Net.Http.HttpMessageInvoker
    System.Net.Http.HttpClient

https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Net.WebClient

https://msdn.microsoft.com/zh-cn/library/system.net.webclient(v=vs.100).aspx#平台

各个类其实通过名字也能知道一个大概了,我也不见的能说的清楚,所以提供了msdn地址供参考。这个问题就有点类似于用哪个函数去打开文件一样。你需要看各个类是主要作用是什么,哪个版本开始支持的,如果感觉文档说的功能一样,一般用更新的类。

Socket很明显是底层了类,不作详述。

TcpClient和UdpClient相对一组,3层通讯嘛

HttpWebRequest、WebRequest这个在上面已经看到是继承关系,具体的就看文档了。WebRequest对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。

WebClient:提供用于将数据发送到由 URI 标识的资源及从这样的资源接收数据的常用方法。(包含收response和发request的调用)

HttpClient:Provides a base class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.

HttpClient和WebClient是用来收发的具体的调用类。这样就比较清楚了吧

总结一下,多看msdn文档。

rinson | 园豆:293 (菜鸟二级) | 2018-07-03 15:37
0

1、如果是TCP/UDP,可以直接使用Socket类,特别是做服务器,使用异步模型,性能杠杠的,直接参考微软的官方.net core的例子:https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.socketasynceventargs.-ctor?view=netcore-2.1

对于服务器来说,要做一下缓存管理,切勿因为收发产生大量的小数组,例子有这部分,自己研究一下。

2、如果是后台开发,需要使用http协议,建议使用webapi;

3、c#对http接口的调用建议采用WebClient,这个类内部做了连接池,不要每次都去生成webclient,建议采用单例模式;

ray.iot | 园豆:62 (初学一级) | 2018-07-03 16:11
0

说白了就是用什么协议就用什么方法

丫的 | 园豆:1575 (小虾三级) | 2018-07-03 16:34
0

Socket

日暮青色 | 园豆:475 (菜鸟二级) | 2018-07-04 12:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册