只获取带有套接字的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);
}
谢谢你的每一个小帮助!
i = sock.Receive(bytes, 20);
然而,这是毫无意义的:计算机很可能已经收到了包含完整响应的tcp数据包,而您所做的只是读取系统缓冲区的一部分。