📄 socks5proxydetectprocedure.cs
字号:
namespace Imps.Client.CommLayer.NetworkDetect
{
using Imps.Client.CommLayer.SocksSipConnection;
using System;
using System.Runtime.InteropServices;
internal sealed class Socks5ProxyDetectProcedure : SocksProxyDetectProcedure
{
public Socks5ProxyDetectProcedure(string proxyUrl, int proxyPort, string userName, string passWord, string dstUrl, int dstPort) : base(proxyUrl, proxyPort, userName, passWord, dstUrl, dstPort)
{
}
public override bool Authenticate(out SocksMessage Msg)
{
try
{
base.client.Send(new PasswordMethodSocks5Message(base._userName, base._passWord).ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyPasswordMethodSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
public override bool BindToServer(out SocksMessage Msg)
{
try
{
base.client.Send(new ConnectToServerSocks5Message(base._dstUrl, base._dstPort).ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyRequirmentSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
public override bool QueryAuthMethod(out SocksMessage Msg)
{
try
{
QueryMethodSocks5Message message = null;
if (base._userName.Length > 0)
{
SocksMethod[] methods = new SocksMethod[2];
methods[1] = SocksMethod.Password;
message = new QueryMethodSocks5Message(methods);
}
else
{
SocksMethod[] methodArray2 = new SocksMethod[1];
message = new QueryMethodSocks5Message(methodArray2);
}
base.client.Send(message.ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyQueryMethodSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -