📄 replyrequirmentsocks4message.cs
字号:
namespace Imps.Client.CommLayer.SocksSipConnection
{
using System;
using System.IO;
internal sealed class ReplyRequirmentSocks4Message : Socks4Message
{
private string _dstHost;
private int _dstPort;
private Socks4RequirmentReplyType _rep;
public ReplyRequirmentSocks4Message(Socks4RequirmentReplyType rep, string dstHost, int dstPort)
{
this.Rep = rep;
this.DstHost = dstHost;
this.DstPort = dstPort;
}
public static ReplyRequirmentSocks4Message Parse(byte[] messageBuffer)
{
ReplyRequirmentSocks4Message message;
try
{
if (messageBuffer == null)
{
throw new ArgumentException("messageBuffer");
}
if (messageBuffer[0] != 0)
{
throw new ArgumentException("messageBuffer");
}
try
{
using (MemoryStream stream = new MemoryStream(messageBuffer))
{
stream.Seek((long) 1, SeekOrigin.Begin);
Socks4RequirmentReplyType rep = (Socks4RequirmentReplyType) ((byte) stream.ReadByte());
string dstHost = "";
int dstPort = 0;
if (rep == Socks4RequirmentReplyType.Granted)
{
dstPort = stream.ReadByte() << 8;
dstPort |= stream.ReadByte();
for (int i = 0; i < 4; i++)
{
if (dstHost != "")
{
dstHost = dstHost + ".";
}
dstHost = dstHost + stream.ReadByte().ToString();
}
}
message = new ReplyRequirmentSocks4Message(rep, dstHost, dstPort);
}
}
catch (Exception exception)
{
throw new ArgumentException("转换过程中出现错误", exception);
}
}
catch (Exception exception2)
{
throw new SocksConnectionException("代理服务器对连接请求的应答无效", exception2, SocksConnectionErrorCode.ReplyError);
}
return message;
}
public override byte[] ToBinary()
{
return null;
}
public string DstHost
{
get
{
return this._dstHost;
}
private set
{
this._dstHost = value;
}
}
public int DstPort
{
get
{
return this._dstPort;
}
private set
{
this._dstPort = value;
}
}
public Socks4RequirmentReplyType Rep
{
get
{
return this._rep;
}
private set
{
this._rep = value;
}
}
public bool Succeeded
{
get
{
return (this.Rep == Socks4RequirmentReplyType.Granted);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -