当前位置: 首页>>代码示例>>C#>>正文


C# MemoryStream.Append方法代码示例

本文整理汇总了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;
            }
        }
开发者ID:acceleration3,项目名称:pm-flagger,代码行数:84,代码来源:SocksProxySocket.cs


注:本文中的MemoryStream.Append方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。