C# 使用TCP创建HTTP客户程序

      最后更新:2022-04-14 17:59

      04cd7c2576c2ef8257c35efc8a5d6cae.png

      要开始, 建立控制台应用程序( 包件), 并向 Web 服务器提出 HTTP 请求。 此函数先前使用 HttpCliet 类处理, 但使用 TcpCliet 类需要彻底理解 HTTP 协议 。

      HttpClientUsingTcp 样本代码使用以下名称空间:

      b466748e130fbd09ff41b603de0b7069.png

      程序接收命令行选项并传输服务器名称。 然后通过请求 HtmlAsync 函数将 HTTP 请求发送到服务器, 该函数返回任务: 结果属性的字符串 。

      221c205e3bb18bb44fcef4d86f9652f3.png

      现在考虑请求 HtmlAsync 函数的最关键方面 。首先,考虑 TcpCliet 对象 。其次,FlickrAsync提供了照片, 依据创用CC BY-NC-SA 2.在 HTTP 默认端口 80 上建立与主机的 TCP 连接。再次,使用 GetStream 方法取回溪流,使用此链接读写 :

      2849937e23a867cb22f4f5cbb7b1238d.png

      现在可以用来发送服务器请求。读取响应。HTTP是一种基于文本的协议。因此,在字符串中界定请求很简单。要向服务器提出基本请求,请使用以下语法:HTTP Get 方法由标题定义 。然后给出 URL 和 HTTP 版本 HTTP/1 的路径 。主机标题、主机名和端口号在第二行中定义。行 3 定义连接标题 。通常,使用连接标题,客户提出的持续不动的要求服务器必须保持连接打开 。当客户希望提出进一步询问时。服务器只收到一个请求 。因此,服务器应终止连接。非常接近标题连接 。为了结束标题信息,要在请求中添加空行,请使用 rn 。标题信息称为 NetworkStream 的 WrideAsync 方法。UTF-8 编码用于发送 。立刻发送缓存到服务器请使用 FlushAsync 函数 。相反,数据可以在本地缓存 :

      b32cad8ddbd9a03b214e1deb1c2a04a4.png

      是时候继续这个程序了读取服务器的反应 。不知道回应有多大,因此,建立了一个动态的记忆流。目前,使用 ReadAsync 函数将服务器的解答写入字节数组。此函数将此字节数组的内容添加到内存流 。在从服务器获取全部信息后,溪流里德负责指挥从流中接收数据并将其转换为字符串。并返回给调用者:

      1

      95366eff627ecb095e20892196165ecd.png

      为程序提供网站, 其请求成功, HTML 内容显示在控制台上。 现在是建立 TCP 监听设备和自定义协议的时候了 。

      c9818f4cbf5b62e4ce5bae0ff76353e1.png

      6c242a1153b81f86237bc42e7ef20633.png

      微信公众号

      Dotnet

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类