我必須檢查某些域的http狀態碼,並且可以使用最小的通信量。只能通過套接字獲取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);
}
感謝每個小的幫助!
爲什麼你需要縮小響應的大小?我不相信你會通過接收數十個而不是幾百個字節來獲得任何速度優勢(兩者都可能適合單個tcp幀)。 – simonc
其關於域的數量。我必須檢查幾百萬個狀態代碼。當標題大約有400-500字節時,1000萬域的下載量爲〜4.6 GByte –