C# 帮助和建议

C# 帮助和建议,c#,C#,我正在尝试学习如何使用套接字进行web请求,但我很难在网上找到任何东西。我发现了很多使用套接字的“客户端”->“服务器”教程,但没有任何关于生成web请求、刮取器等的内容 我希望能够使用套接字开发多线程应用程序,因为我听说它们更容易使用 我正在尝试学习如何使用套接字进行web请求,但我很难在网上找到任何东西 如果web请求是指HTTP请求,那么使用套接字的级别太低。我建议您为此使用或。例如,以下是如何向google.com发送HTTP请求并获取生成的HTML: using System; usi

我正在尝试学习如何使用套接字进行web请求,但我很难在网上找到任何东西。我发现了很多使用套接字的“客户端”->“服务器”教程,但没有任何关于生成web请求、刮取器等的内容

我希望能够使用套接字开发多线程应用程序,因为我听说它们更容易使用

我正在尝试学习如何使用套接字进行web请求,但我很难在网上找到任何东西

如果web请求是指HTTP请求,那么使用套接字的级别太低。我建议您为此使用或。例如,以下是如何向google.com发送HTTP请求并获取生成的HTML:

using System;
using System.Net;

class Program
{
    static void Main()
    {
        using (var client = new WebClient())
        {
            var result = client.DownloadString("http://www.google.com");
            Console.WriteLine(result);
        }
    }
}

更新:

根据评论部分的要求,这里有一个学习使用套接字的示例:

using System;
using System.IO;
using System.Net.Sockets;

class Program
{
    static void Main()
    {
        using (var client = new TcpClient("www.google.com", 80))
        using (var stream = client.GetStream())
        using (var writer = new StreamWriter(stream))
        using (var reader = new StreamReader(stream))
        {
            writer.Write(
@"GET / HTTP/1.1
Host: www.google.com
Connection: close

");
            writer.Flush();
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}

免责声明:绝对不要在任何实际应用程序中编写任何类似的代码。

我理解Darin,但我仍然愿意学习。我喜欢挑战。WebClient在设置标题时也遗漏了重要的内容。@Peppi Hasting,它没有遗漏任何内容。你看过房子了吗?顾名思义,它允许您在请求时设置HTTP头。我已经使用了HTTPRequest和HTTPResponse。我想学习如何为同样的事情使用套接字。@Peppi Hasting,套接字是低级TCP。“你真的不想在这里重新发明轮子。”佩皮·黑斯汀,好吧,我看你是坚持的。查看我的更新。但老实说,如果您想加深您的知识,我建议您阅读HTTP协议规范。正如我所说,使用套接字进行HTTP就像试图用原子弹杀死一只苍蝇。