在 .NET 中使用 Socket,如果连接远端需要通过代理服务器,怎么办?

hebhd 2005-10-17 03:22:43
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();


我要通过代理如何去做。。。。。。
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hebhd 2005-10-18
  • 打赏
  • 举报
回复
难道一个简单的问题非要那么复杂吗?

高手们就不能直接给个示例吗?

通过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 怎么处理。 等大家来帮忙呢。

lookfeng 2005-10-17
  • 打赏
  • 举报
回复
http://www.chinabyte.com/20030124/1649965.shtml
lookfeng 2005-10-17
  • 打赏
  • 举报
回复
这不是很简单吗,用代理,你主要是得到代理协议,
在连接到远端服务器前,先建一个socket,与代理服务器建立连接,然后发送握手协议,
这要看用什么代理,一般你要告诉代理服务器远端服务器IP,端口,其间如果需要验证,可能要发送用户名密码,等握手完成,即可使用代理。
这时候,你可以用与代理服务器建立连接的socket向远端服务器发送数据。
asilas 2005-10-17
  • 打赏
  • 举报
回复
搜索一下ProxySocket
asilas 2005-10-17
  • 打赏
  • 举报
回复
有成熟组件,查一下吧,好象是什么PROXY的
hebhd 2005-10-17
  • 打赏
  • 举报
回复
不会吧。只要通过 http代理及sockets5 代理就可以了。难道CSDN 没有高手吗?

自由程序员 2005-10-17
  • 打赏
  • 举报
回复
大课题
我不懂电脑 2005-10-17
  • 打赏
  • 举报
回复
除了用api或第三方控件,暂时没有办法。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧