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;
socket 使用代理
最新推荐文章于 2024-04-07 20:18:10 发布