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;

原创粉丝点击