socket 使用代理
来源:互联网 发布:淘宝怎么看海淘 编辑:程序博客网 时间:2024/04/30 07:55
public static Socket ConnectToSocks5Proxy(string proxyAdress, ushort proxyPort, string destAddress, ushort destPort, string userName, string password) { IPAddress destIP = null; IPAddress proxyIP = null; byte[] request = new byte[257]; byte[] response = new byte[257]; byte[] tmpBuffer = new byte[40]; try { proxyIP = IPAddress.Parse(proxyAdress); } catch (FormatException) { // get the IP address proxyIP = Dns.GetHostByAddress(proxyAdress).AddressList[0]; } // Parse destAddress (assume it in string dotted format "212.116.65.112" ) try { destIP = IPAddress.Parse(destAddress); } catch (FormatException) { // wrong assumption its in domain name format "www.microsoft.com" } IPEndPoint proxyEndPoint = new IPEndPoint(proxyIP, proxyPort); // open a TCP connection to SOCKS server... Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect(proxyEndPoint); String temp; //ipaddress为需要连接的服务端的ip,port为服务端端口 temp=String.Format("CONNECT {0}:{1:D} HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n",destAddress,destPort); request = System.Text.Encoding.ASCII.GetBytes(temp); s.Send(request, temp.Length, SocketFlags.None); s.Receive(response); // Get variable length response... String tempstr=System.Text.Encoding.UTF8.GetString(response); if (tempstr.Substring(9,3)=="200") { return s; } return null;