【问题标题】:C# : Network Programming - GET / HTTP Requested WEBSITEC# : 网络编程 - GET / HTTP 请求的网站
【发布时间】:2021-08-23 06:58:47
【问题描述】:

所以, 我们有一个关于网络编程的实验室。我们现在不会太深入,因为这只是一个介绍,但它仍然非常棘手。

无论如何... 我使用 localhost (127.0.0.1) 作为客户端,而服务器是我们真正需要编写的代码,作为控制台应用程序。

在应用程序的目录中有 2 个网页(index.html 和 secondpage.html) - 用于测试目的。

作业的第 2 部分说:

服务器检查每个 GET 请求的网站是否存在于“数据系统”中,如果存在,则发送以下内容:

  • 确认码 (200)
  • 网页的字符数
  • 和 bla bla bla

(基本上用FileStream等...)

我的问题基本上是关于这个“检查”(粗体)。一旦我得到这个检查/条件语句,我就可以管理其余的。

到目前为止,这就是我所拥有的(相关部分的sn-p):

private static void ClientHandler(object o)
    {
        TcpClient client = o as TcpClient;
        NetworkStream stream = client.GetStream();

        int i;
        Byte[] bytes = new Byte[256];

        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
        {
            string webPage = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
            Console.WriteLine(webPage);
            
        }

    } 

PS1:ClientHandler 是客户端连接时(作为新线程)执行的方法

PS2:那个 Console.WriteLine 是一个检查,看看我到底得到了什么。

使用 MS Edge 输出 http://127.0.0.1/index.html):



GET /index.html HTTP/1.1

主机:127.0.0.1

连接:保持活动

缓存控制:max-age=0

sec-ch-ua: "Not;A Brand";v="99", "Microsoft Edge";v="91", "Chromium";v="91"

sec-ch-ua-mobile: ?0

DNT:1 升级不安全请求:1

用户代理:Mozilla/5.0( 视窗 NT 10.0; WIN64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.37

接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange; v=b3;q=0.9

Sec-Fetch-Site:无

Sec-Fetch-Mode:导航

Sec-Fetch-User: ?1

Sec-Fetch-Dest:文档

接受编码:gzip、deflate、br

接受语言:en-GB,en;q=0.9,de;q=0.8,de-DE;q=0.7,en-US;q=0.6


我在想,如果我可以,例如,创建一个字符串列表,将我拥有的所有页面的名称,如“数据库”,获取引用我在 127.0 之后编写的 GET 行的部分.0.1,在本例中为 index.html,然后检查列表是否包含它。

但是我什至没有得到每行的这个 o/p,而是我得到第一行的第一个字符,然后是第二个字符,直到我得到最后一行的第一个字符,然后它返回,开始获取第一行的第二个字符,第二个字符,直到它得到所有字符 - 你知道,以垂直方式,而不是水平方式。诡异的。 我希望你们知道我的意思。

那么,这是什么检查,我该怎么做呢?

谢谢。

【问题讨论】:

    标签: c# http server network-programming client


    【解决方案1】:

    您的问题可能的解决方案(或想法)是将客户的整个请求作为字符串获取。如果它包含像您的示例一样的换行符,您将抓住第一行并通过正则表达式搜索请求的文档/站点页面(例如 index.html)。您还可以对请求应用正则表达式并获取第一个结果。

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 2021-01-16
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多