本文整理汇总了C#中MemoryStream.Append方法的典型用法代码示例。如果您正苦于以下问题:C# MemoryStream.Append方法的具体用法?C# MemoryStream.Append怎么用?C# MemoryStream.Append使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemoryStream
的用法示例。
在下文中一共展示了MemoryStream.Append方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleRecv
private void HandleRecv(byte[] data)
{
switch (state)
{
case SocketState.HANDSHAKING:
// garbage collector will get rid of this, no need for Close()
MemoryStream request = new MemoryStream();
// check response
if (data[0] != GetVersion() && data[1] != 0)
{
// bad
Close();
}
request.Append(GetVersion());
// connect
request.Append(1);
// reserved
request.Append(0);
// dns or ipv4?
switch (Uri.CheckHostName(hs.host))
{
case UriHostNameType.Dns:
request.Append(3);
request.Append((byte)hs.host.Length);
break;
case UriHostNameType.IPv4:
request.Append(1);
break;
default:
// not supported
Console.WriteLine("Neither DNS nor IPv4");
return;
}
request.Append(Encoding.ASCII.GetBytes(hs.host));
byte[] bPort = BitConverter.GetBytes((UInt16)hs.port);
if (BitConverter.IsLittleEndian)
{
// network byte order is big endian
Array.Reverse(bPort);
}
request.Append(bPort);
byte[] buffer = request.ToArray();
state = SocketState.CONNECTING;
Send(buffer);
Receive();
break;
case SocketState.CONNECTING:
if (data[0] == 5 && data[1] == 0)
{
isConnected = true;
state = SocketState.CONNECTED;
// connect callback
if (onConnectCallback != null)
{
onConnectCallback(this);
}
}
else if(data[0] == 4 && data[1] == 0x5A)
{
isConnected = true;
state = SocketState.CONNECTED;
// connect callback
if (onConnectCallback != null)
{
onConnectCallback(this);
}
}
else
{
Close();
Console.WriteLine("Bad socks response while connecting");
}
break;
case SocketState.CONNECTED:
// packets are from proxied host
if (onReceiveCallback != null)
{
onReceiveCallback(this, data);
}
break;
}
}