只获取带有套接字的http状态码

本文关键字:http 状态 套接字 获取 | 更新日期: 2023-09-27 18:06:58

我必须检查一些域的http状态代码,以最小的流量是可能的。

我决定使用sockets。问题是系统总是接收完整的报头,而不仅仅是20字节。

我怎样才能更多地减少响应?

下面是代码…工作很好

    string uri = "www.stackoverflow.com";
    var addresses = System.Net.Dns.GetHostAddresses(uri);
    IPEndPoint hostep = new IPEndPoint(addresses[0], 80);
    Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    sock.Connect(hostep);
    if (sock.Connected)
    {
        byte[] msg = Encoding.UTF8.GetBytes("HEAD / HTTP/1.1'r'nHost: "+uri+"'r'nConnection: Close'r'n'r'n");
        int i = sock.Send(msg,0,msg.Length);
        byte[] bytes = new byte[20];
        i = sock.Receive(bytes);
        string header = Encoding.ASCII.GetString(bytes);
        Console.WriteLine(header);
    }

谢谢你的每一个小帮助!

只获取带有套接字的http状态码

i = sock.Receive(bytes, 20);

然而,这是毫无意义的:计算机很可能已经收到了包含完整响应的tcp数据包,而您所做的只是读取系统缓冲区的一部分。