带有TCP套接字的HTTP GET请求不会返回任何内容

时间:2015-11-29 13:10:59

标签: .net http tcp get

我在.NET中有这个代码:

        Socket Connector = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        string IP = "198.41.208.139";
        Connector.Connect(new IPEndPoint(IPAddress.Parse(IP), 80));
        Connector.Send(Encoding.ASCII.GetBytes("GET / HTTP/1.1"));
        byte[] Data = new byte[1024];
        Connector.Receive(Data);

IP属于http://reddit.com/,但GET请求不会返回任何内容。 Receive方法无限期地阻止程序。我尝试使用网站http://imgur.com/http://youtube.com/

时发生了同样的事情

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:1)

您希望根据RFC2616 HTTP 1.1"\r\n\r\n"附加到请求中。

对于HTTP 1.0+,你应该添加一个Host:标题(1.1的mandory,推荐用于1.0):

Connector.Send(Encoding.ASCII.GetBytes("GET / HTTP/1.1\r\nHost: reddit.com\r\n\r\n"));