我必须检查某些域的http状态代码,可以获得最小的流量。
我决定使用套接字。问题是系统总是接收完整的标头而不仅仅是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);
}
感谢您的每一个小帮助!
答案 0 :(得分:1)
i = sock.Receive(bytes, 20);
然而,这是毫无意义的:计算机很可能已经收到了具有完整响应的TCP数据包,而您所做的只是只读取系统缓冲区的一部分。