this.ip=IPAddress.Parse("202.108.22.5");
this.port=80
sb.Append("GET / HTTP/1.1"+"\r\n");
sb.Append("Accept: */*\r\n");
sb.Append("Accept-Language: zh-cn\r\n");
sb.Append("Accept-Encoding: gzip, deflate\r\n");
sb.Append("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; TencentTraveler ; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\r\n");
sb.Append("Host: www.baidu.com\r\n");
sb.Append("Connection: Keep-Alive\r\n\r\n");
System.Net.IPEndPoint ep = new IPEndPoint(this.ip,this.port);
this.socket = new Socket(System.Net.Sockets.AddressFamily.InterNetwork,System.Net.Sockets.SocketType.Stream,System.Net.Sockets.ProtocolType.Tcp);
this.socket.BeginConnect(ep,new AsyncCallback(ConnectCallback),this.socket);
//阻塞当前线程
this.connectdone.WaitOne();
if(this.haveError)
{
return "";
}
//得到请求字符串
this.reqdata = System.Text.Encoding.Default.GetBytes(sb.ToString());
this.socket.BeginSend(this.reqdata,0,this.reqdata.Length,System.Net.Sockets.SocketFlags.None,new AsyncCallback(SendCallback),this.socket);
//阻塞当前线程
senddone.WaitOne();
if(this.haveError || this.sendbytesnum !=this.reqdata.Length)
{
this.socket.Close();
return "";
}
this.socket.BeginReceive(this.readbuff,0,512,0,new AsyncCallback(ReceiveCallback),this.socket);
receivedone.WaitOne();
//显式关闭socket
this.socket.Close();
我要通过代理如何去做

解决方案 »

  1.   

    除了用api或第三方控件,暂时没有办法。
      

  2.   

    不会吧。只要通过 http代理及sockets5 代理就可以了。难道CSDN 没有高手吗?
      

  3.   

    有成熟组件,查一下吧,好象是什么PROXY的
      

  4.   

    这不是很简单吗,用代理,你主要是得到代理协议,
    在连接到远端服务器前,先建一个socket,与代理服务器建立连接,然后发送握手协议,
    这要看用什么代理,一般你要告诉代理服务器远端服务器IP,端口,其间如果需要验证,可能要发送用户名密码,等握手完成,即可使用代理。
    这时候,你可以用与代理服务器建立连接的socket向远端服务器发送数据。
      

  5.   

    http://www.chinabyte.com/20030124/1649965.shtml
      

  6.   

    难道一个简单的问题非要那么复杂吗?高手们就不能直接给个示例吗?通过socks5 http 代理来获取网页数据的示例嘛。CSDN的高手们难道只会搬贴子不成现在已经知道透明的 http代理。直接向其端口发送http包即可sb.Append("GET / HTTP/1.1"+"\r\n");
    改为 sb.Append("GET http://www.baidu.com/ HTTP/1.1"+"\r\n");
    即可以接收数据。如果是有密码的http代理如何处理。socks5 怎么处理。 等大家来帮忙呢。