?? socks5.cs
字號(hào):
?namespace Imps.Client.CommLayer.SocksSipConnection
{
using Imps.Client.Resource;
using System;
using System.Net.Sockets;
internal sealed class Socks5 : SocksBase
{
public Socks5(SocksSipConnectionOption option) : base(option)
{
}
protected override void ConsultToProxy(string host, int port)
{
try
{
QueryMethodSocks5Message message;
if (base.Option.UserName.Length == 0)
{
SocksMethod[] methods = new SocksMethod[1];
message = new QueryMethodSocks5Message(methods);
}
else
{
SocksMethod[] methodArray2 = new SocksMethod[2];
methodArray2[1] = SocksMethod.Password;
message = new QueryMethodSocks5Message(methodArray2);
}
ReplyQueryMethodSocks5Message message2 = ReplyQueryMethodSocks5Message.Parse(base.SendSocksMessage(message));
if (message2.Method == SocksMethod.Password)
{
string username = base.Option.UserName;
string password = base.Option.Password;
PasswordMethodSocks5Message message3 = new PasswordMethodSocks5Message(username, password);
if (!ReplyPasswordMethodSocks5Message.Parse(base.SendSocksMessage(message3)).IsSuccessed)
{
throw new SocksConnectionException("用戶(hù)名不存在或密碼錯(cuò)誤", SocksConnectionErrorCode.PasswordError);
}
}
else if (message2.Method != SocksMethod.NoAuth)
{
throw new SocksConnectionException("代理服務(wù)器不支持用戶(hù)名/密碼驗(yàn)證方式", SocksConnectionErrorCode.PasswordAuthNotSupported);
}
ConnectToServerSocks5Message message5 = new ConnectToServerSocks5Message(host, port);
if (!ReplyRequirmentSocks5Message.Parse(base.SendSocksMessage(message5)).IsSuccessed)
{
throw new SocksConnectionException("代理服務(wù)器與最終服務(wù)器的連接失敗", SocksConnectionErrorCode.ServerFailure);
}
base.RaiseConnectedEvent();
}
catch (SocketException exception)
{
base.RaiseFailedEvent(new SocksConnectionException("在協(xié)商過(guò)程中出現(xiàn)錯(cuò)誤", exception, SocksConnectionErrorCode.ServerFailure));
}
catch (SocksConnectionException exception2)
{
base.RaiseFailedEvent(exception2);
}
catch (Exception exception3)
{
base.RaiseFailedEvent(new SocksConnectionException("與代理服務(wù)器的協(xié)商過(guò)程失敗", exception3, SocksConnectionErrorCode.ServerFailure));
}
}
public override string ToString()
{
return StringTable.ClientCommLayerString.Socks5Proxy;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -