Tcpclient和webRequest之间的区别

时间:2015-02-24 12:25:49

标签: c# tcpclient webrequest

我正在尝试验证网站是否已启动。我正在使用TcpClient来调用网站,它工作正常,但当我使用webrequest为同一个网站时,它会抛出404错误。

TcpClient和webRequest的功能有什么区别?

var client = new TcpClient();
client.Connect("android.clients.google.com", 80);

var request = WebRequest.Create("http://android.clients.google.com");
var resp = request.GetResponse(); 

2 个答案:

答案 0 :(得分:4)

  

TcpClient和webRequest的功能有什么区别?

TcpClient是TCP客户端套接字的包装器,允许您与任何TCP服务器通信。用于与该服务器通信的application protocol将由您的代码实现。您的代码仅连接到HTTP服务器,但不与其通信。

HttpWebRequest不仅处理TCP层,还处理HTTP layer。这使您可以对任何HTTP服务器执行Web请求。您的代码会向GET执行http://android.clients.google.com个请求,doesn't exist,因此您收到的404

解决原始问题:Web服务器响应给定端口上的套接字连接甚至返回HTTP响应这一事实可能意味着或者可能不意味着该网站被视为“up”,因此获得200响应。接收Twitter's "failwhale"是否表示网站“正常”?根据您实际尝试的操作,可能需要采用不同的方法。有时最好发出你想要的请求,而不是事先“ping”网站。

答案 1 :(得分:0)

404错误测量Web服务器在线但没有这样的文件。 Web服务器返回错误,而不是客户端。换句话说,测试没问题。使用真正离线的Web服务器检查状态 - 您必须获得连接超时,端口关闭或类似。无论如何,为此目的,最好使用TcpClient。