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


C# BitStream.Read方法代码示例

本文整理汇总了C#中BitStream.Read方法的典型用法代码示例。如果您正苦于以下问题:C# BitStream.Read方法的具体用法?C# BitStream.Read怎么用?C# BitStream.Read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BitStream的用法示例。


在下文中一共展示了BitStream.Read方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Deserialize

        public ReplicaReturnResult Deserialize(BitStream inBitStream, uint timestamp, uint lastDeserializeTime, SystemAddress systemAddress)
        {
            if (lastDeserializeTime == 0)
                Console.Write("First call to Player::Deserialize\n");
            else
                Console.Write("Got Player::Deserialize\n");

            inBitStream.Read(out position);
            inBitStream.Read(out health);
            return ReplicaReturnResult.REPLICA_PROCESSING_DONE;
        }
开发者ID:JetCrusherTorpedo,项目名称:raknetdotnet,代码行数:11,代码来源:Player.cs

示例2: clientRPC

        public static void clientRPC(RPCParameters rpcParameters)
        {
            BitStream b = new BitStream(rpcParameters, false);
            string name;

            if (!b.Read(out name))
            {
                Console.Write("Too-short bitstreams.\n");
                return;
            }

            Console.Write("In clientRPC:\n");
            Console.Write("Name is {0}\n", name);

            uint age;
            if (!b.ReadCompressed(out age))
            {
                return;
            }

            Console.Write("Age is {0}\n", age);
            Console.Out.Flush();

            bool wroteEmploymentStruct;
            if (!b.Read(out wroteEmploymentStruct))
            {
                return;
            }

            if (wroteEmploymentStruct)
            {
                Console.Write("We are employed.\n");

                EmploymentStruct employmentStruct;
                if (!b.Read(out employmentStruct.salary)) return;
                if (!b.Read(out employmentStruct.yearsEmployed)) return;

                Console.Write("Salary is {0}.  Years employed is {1}\n", employmentStruct.salary, employmentStruct.yearsEmployed);
            }
            else
                Console.Write("We are between jobs :)\n");

            quit = true;
        }
开发者ID:JetCrusherTorpedo,项目名称:raknetdotnet,代码行数:44,代码来源:Program.cs

示例3: ReceiveScopeChange

 public ReplicaReturnResult ReceiveScopeChange(BitStream inBitStream, SystemAddress systemAddress, uint timestamp)
 {
     bool inScope;
     inBitStream.Read(out inScope);
     if (inScope)
         Console.Write("Received message that scope is now true in Player\n");
     else
         Console.Write("Received message that scope is now false in Player\n");
     return ReplicaReturnResult.REPLICA_PROCESSING_DONE;
 }
开发者ID:JetCrusherTorpedo,项目名称:raknetdotnet,代码行数:10,代码来源:Player.cs

示例4: Deserialize

 private static object Deserialize(BitStream stream, params object[] codecOptions)
 {
     byte[] numArray;
     int num;
     ContextMenuItemData[] contextMenuItemDataArray;
     int num1 = stream.Read<int>(codecOptions);
     if (num1 != 0)
     {
         contextMenuItemDataArray = new ContextMenuItemData[num1];
     }
     else
     {
         contextMenuItemDataArray = null;
     }
     ContextMenuItemData[] contextMenuItemDatum = contextMenuItemDataArray;
     for (int i = 0; i < num1; i++)
     {
         int num2 = stream.Read<int>(codecOptions);
         stream.ReadByteArray_MinimalCalls(out numArray, out num, codecOptions);
         contextMenuItemDatum[i] = new ContextMenuItemData(num2, num, numArray);
     }
     return new ContextMenuData(num1, contextMenuItemDatum);
 }
开发者ID:HexHash,项目名称:LegacyRust,代码行数:23,代码来源:ContextMenuData.cs

示例5: GetString

        public static string GetString(byte[] data)
        {
            int letters = data.Length * 8 / 5;
            string base32_string = "";
            BitStream b = new BitStream();
            b.Write(data, 0, data.Length);
            b.Seek(0, System.IO.SeekOrigin.Begin);
            if (b.Length == 0) return("");
            long output_length = b.Length;
            Console.WriteLine("bits in bitstream:" + b.Length);
            if (b.Length % 5 != 0)
            {
                Console.WriteLine("rest bits:" + (b.Length % 5));
                output_length += (5 - (b.Length % 5));
            }
            Console.WriteLine("bits in output buffer(+padding):" + output_length);
            byte[] output = new byte[output_length];
            output.Initialize();
            //output.Length
            int ret = b.Read(output, 0, (int)b.Length);//will crash with buffers over 4gb ,or something else
            //now we have an array of bits in output that will be converted to base32
            //5 bit to 1 byte + zero padding conversion
            //pad to correct length with zeros
            long pos = 0;
            while (pos < output.Length)
            {
                int value = 0;
                /*
                value += output[pos + 0] * 1;
                value += output[pos + 1] * 2;
                value += output[pos + 2] * 4;
                value += output[pos + 3] * 8;
                value += output[pos + 4] * 16;
                */

                value += output[pos + 0] * 16;
                value += output[pos + 1] * 8;
                value += output[pos + 2] * 4;
                value += output[pos + 3] * 2;
                value += output[pos + 4] * 1;

                base32_string += conversion_array[value];
                pos += 5;
            }
            Console.WriteLine("pos:"+pos);
            return (base32_string);
        }
开发者ID:BackupTheBerlios,项目名称:vpdcplusplus-svn,代码行数:47,代码来源:Base32.cs

示例6: Sample

        internal Sample(BitStream bitStream, byte bitsPerComponent, byte componentCount)
        {
            if (bitStream == null)
                throw new ArgumentNullException("bitStream");

            if (bitsPerComponent <= 0 || bitsPerComponent > 16)
                throw new ArgumentOutOfRangeException("bitsPerComponent");

            if (componentCount <= 0 || componentCount > 5)
                throw new ArgumentOutOfRangeException("componentCount");

            m_bitsPerComponent = bitsPerComponent;

            m_components = new short[componentCount];
            for (short i = 0; i < componentCount; ++i)
                m_components[i] = (short)bitStream.Read(bitsPerComponent);
        }
开发者ID:joaonlopes,项目名称:ThumbnailCreator,代码行数:17,代码来源:Sample.cs

示例7: Deserialize

        internal void Deserialize(BitStream bs)
        {
            bool success;

            bool fieldExists;
            success = bs.Read(out fieldExists);
            Debug.Assert(success, "Failed to read synced class existance");

            if (fieldExists)
            {
                foreach (var mySyncedObject in m_syncedObjects)
                {
                    mySyncedObject.Deserialize(bs);
                }

                foreach (var mySynced in m_syncedVariables)
                {
                    mySynced.Deserialize(bs);
                }
            }
        }
开发者ID:leandro1129,项目名称:SpaceEngineers,代码行数:21,代码来源:MySyncedClass.cs

示例8: ToBase62

 /// <summary>
 /// Convert a byte array
 /// </summary>
 /// <param name="original">Byte array</param>
 /// <returns>Base62 string</returns>
 public static string ToBase62( this byte[] original )
 {
     StringBuilder sb = new StringBuilder();
     BitStream stream = new BitStream( original );         // Set up the BitStream
     byte[] read = new byte[ 1 ];                          // Only read 6-bit at a time
     while( true )
     {
         read[ 0 ] = 0;
         int length = stream.Read( read, 0, 6 );           // Try to read 6 bits
         if( length == 6 )                                // Not reaching the end
         {
             if( (int)( read[ 0 ] >> 3 ) == 0x1f )            // First 5-bit is 11111
             {
                 sb.Append( Base62CodingSpace[ 61 ] );
                 stream.Seek( -1, SeekOrigin.Current );    // Leave the 6th bit to next group
             }
             else if( (int)( read[ 0 ] >> 3 ) == 0x1e )       // First 5-bit is 11110
             {
                 sb.Append( Base62CodingSpace[ 60 ] );
                 stream.Seek( -1, SeekOrigin.Current );
             }
             else                                        // Encode 6-bit
             {
                 sb.Append( Base62CodingSpace[ (int)( read[ 0 ] >> 2 ) ] );
             }
         }
         else if( length == 0 )                           // Reached the end completely
         {
             break;
         }
         else                                            // Reached the end with some bits left
         {
             // Padding 0s to make the last bits to 6 bit
             sb.Append( Base62CodingSpace[ (int)( read[ 0 ] >> (int)( 8 - length ) ) ] );
             break;
         }
     }
     return sb.ToString();
 }
开发者ID:robzhu,项目名称:Library.WebApi,代码行数:44,代码来源:Base62.cs

示例9: Main

        static void Main(string[] args)
        {
            char ch;
            bool isServer;
            RakPeerInterface serverRakPeer = RakNetworkFactory.GetRakPeerInterface();
            const int maxNumberOfClients = 2048;
            IList<Connection> clientConnections = new List<Connection>(maxNumberOfClients);
            const ushort portNum = 12345;
            int querySize = 1000;
            byte[] dummyData = new byte[querySize];
            Random r = new Random();
            r.NextBytes(dummyData);
            dummyData[0] = (byte)RakNetBindings.ID_USER_PACKET_ENUM;
            List<SystemAddress> incomingConnections = new List<SystemAddress>(maxNumberOfClients);
            Console.WriteLine("(S)erver or (C)lient?");
            ch = Console.ReadKey(true).KeyChar;
            if (ch == 's')
            {
                isServer = true;
                serverRakPeer.SetMaximumIncomingConnections(maxNumberOfClients);
                SocketDescriptor socketDescriptor = new SocketDescriptor(portNum, string.Empty);
                serverRakPeer.Startup(maxNumberOfClients, 0, new SocketDescriptor[] { socketDescriptor }, 1);
                Console.WriteLine("Server started");
            }
            else
            {
                isServer = false;
                Console.Write("Number of Clients: ");
                string numberOfClientsString = Console.ReadLine();
                int numberOfClients = Convert.ToInt32(numberOfClientsString);
                Console.Write("Query size: ");
                string querySizeString = Console.ReadLine();
                querySize = Convert.ToInt32(querySizeString);
                SocketDescriptor socketDescriptor = new SocketDescriptor();
                for (int i = 0; i < numberOfClients; ++i)
                {
                    RakPeerInterface clientRakPeer = RakNetworkFactory.GetRakPeerInterface();
                    clientRakPeer.Startup(1, 0, new SocketDescriptor[] { socketDescriptor }, 1);
                    clientConnections.Add(new Connection(clientRakPeer, false));
                }
                Console.WriteLine("Client started");
                Console.Write("Enter server IP: ");
                string serverIP = Console.ReadLine();
                Console.WriteLine("Connecting to server.");
                foreach (Connection clientConnection in clientConnections)
                {
                    clientConnection.RakPeer.Connect(serverIP, portNum, string.Empty, 0);
                }
            }
            //Console.WriteLine("(E)xit");
            uint lastLog = 0;
            while (true)
            {
                if (isServer)
                {
                    Packet p = serverRakPeer.Receive();
                    if (p != null)
                    {
                        BitStream inBitStream = new BitStream(p, false);
                        byte packetIdentifier;
                        inBitStream.Read(out packetIdentifier);
                        switch (packetIdentifier)
                        {
                            case RakNetBindings.ID_NEW_INCOMING_CONNECTION:
                                Console.WriteLine("ID_NEW_INCOMING_CONNECTION");
                                //incomingConnections.Add(p.systemAddress);
                                break;
                            case RakNetBindings.ID_USER_PACKET_ENUM:
                                serverRakPeer.Send(inBitStream, PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, 0, p.systemAddress, false);
                                break;
                        }
                        serverRakPeer.DeallocatePacket(p);
                    }

                    SystemAddress systemAddress = serverRakPeer.GetSystemAddressFromIndex(0);
                    //if (systemAddress.binaryAddress != RakNetBindings.UNASSIGNED_SYSTEM_ADDRESS.binaryAddress &&
                    //    systemAddress.port != RakNetBindings.UNASSIGNED_SYSTEM_ADDRESS.port)
                    if(!systemAddress.Equals(RakNetBindings.UNASSIGNED_SYSTEM_ADDRESS))
                    {
                        RakNetStatistics rss = serverRakPeer.GetStatistics(systemAddress);
                        if (RakNetBindings.GetTime() > lastLog + 4000)
                        {
                            Console.WriteLine("Packets sent:\t\t\t\t{0:D}", rss.packetsSent);
                            lastLog = RakNetBindings.GetTime();
                        }
                    }
                }
                else
                {
                    foreach(Connection clientConnection in clientConnections)
                    {
                        Packet p = clientConnection.RakPeer.Receive();
                        if (p != null)
                        {
                            BitStream inBitStream = new BitStream(p, false);
                            byte packetIdentifier;
                            inBitStream.Read(out packetIdentifier);
                            switch (packetIdentifier)
                            {
                                case RakNetBindings.ID_CONNECTION_REQUEST_ACCEPTED:
//.........这里部分代码省略.........
开发者ID:JetCrusherTorpedo,项目名称:raknetdotnet,代码行数:101,代码来源:Program.cs

示例10: HandlePacket

 private void HandlePacket(Packet packet)
 {
     logger.Debug("received Message:");
     BitStream inBitStream = new BitStream(packet, false);
     byte packetIdentifier;
     inBitStream.Read(out packetIdentifier);
     switch (packetIdentifier)
     {
         case RakNetBindings.ID_REMOTE_DISCONNECTION_NOTIFICATION:
             logger.Debug("Another client has disconnected.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_REMOTE_CONNECTION_LOST:
             logger.Debug("Another client has lost the connection.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_REMOTE_NEW_INCOMING_CONNECTION:
             logger.Debug("Another client has connected.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_CONNECTION_REQUEST_ACCEPTED:
             logger.Debug("Our connection request has been accepted.");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_NEW_INCOMING_CONNECTION:
             logger.Debug("A connection is incoming.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_NO_FREE_INCOMING_CONNECTIONS:
             logger.Debug("The server is full.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_DISCONNECTION_NOTIFICATION:
             logger.Debug("A client has disconnected.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_CONNECTION_LOST:
             logger.Debug("A client lost the connection.\n");
             CallRakNetEventHandler((RakNetMessageId)packetIdentifier);
             break;
         case RakNetBindings.ID_DATABASE_UNKNOWN_TABLE:
             logger.Debug("ID_DATABASE_UNKNOWN_TABLE\n");
             break;
         case RakNetBindings.ID_DATABASE_INCORRECT_PASSWORD:
             logger.Debug("ID_DATABASE_INCORRECT_PASSWORD\n");
             break;
         case RakNetBindings.ID_DATABASE_QUERY_REPLY:
             logger.Debug("ID_DATABASE_QUERY_REPLY\n");
             break;
         default:
             logger.Debug("Message with identifier {0} has arrived.", packetIdentifier);
             break;
     }
 }
开发者ID:JetCrusherTorpedo,项目名称:raknetdotnet,代码行数:54,代码来源:CommunicatorModule.cs

示例11: DeserializeDefault

        public void DeserializeDefault(BitStream bs)
        {
            bool success;

            bool isDefault;
            success = bs.Read(out isDefault);
            Debug.Assert(success, "Failed to read synced class defaultness");

            if (!isDefault)
            {
                foreach (var mySyncedObject in m_syncedClass)
                {
                    mySyncedObject.DeserializeDefault(bs);
                }

                foreach (var mySynced in m_syncedVariables)
                {
                    mySynced.DeserializeDefault(bs);
                }
            }
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:21,代码来源:MySyncedClass.cs

示例12: DeserializeStateData

        internal void DeserializeStateData(BitStream bs)
        {
            bool success;
            int count;

            success = bs.Read(out count);
            Debug.Assert(success, "Failed to read state count");

            for (int i = 0; i < count; i++)
            {
                ProcessReplication(bs);
            }
        }
开发者ID:caomw,项目名称:SpaceEngineers,代码行数:13,代码来源:MyRakNetSyncLayer.cs

示例13: ReplicationDestroy

        internal void ReplicationDestroy(BitStream bs)
        {
            bool success;

            long tmpLong;
            success = bs.Read(out tmpLong);
            Debug.Assert(success, "Failed to read entityID");
            ulong entityID = (ulong)tmpLong;

            m_stateData.Remove(entityID);

            var handle = OnEntityDestroyed;
            if (handle != null)
            {
                handle(entityID);
            }
        }
开发者ID:caomw,项目名称:SpaceEngineers,代码行数:17,代码来源:MyRakNetSyncLayer.cs

示例14: ProcessSync

        internal void ProcessSync(BitStream bs)
        {
            long tmpLong;
            bool success = bs.Read(out tmpLong);
            Debug.Assert(success, "Failed to read entityID");
            ulong entityID = (ulong)tmpLong;

            MySyncedClass mySyncedObject = GetEntitySyncFields(entityID);
            if (mySyncedObject != null)
            {
                mySyncedObject.Deserialize(bs);
            }
        }
开发者ID:caomw,项目名称:SpaceEngineers,代码行数:13,代码来源:MyRakNetSyncLayer.cs

示例15: ReadConnectRequest

        public override bool ReadConnectRequest(BitStream stream, ref String errorString)
        {
            if (!base.ReadConnectRequest(stream, ref errorString))
                return false;

            var tInterface = Interface as TNLInterface;
            if (tInterface == null)
                return false;

            Int32 version;
            if (!stream.Read(out version) || version != tInterface.Version)
            {
                errorString = "Incorrect Version";
                return false;
            }

            if (!stream.Read(out _key))
            {
                errorString = "Unknown Key";
                return false;
            }

            if (!stream.Read(out _playerCOID))
            {
                errorString = "Unknown player ID";
                return false;
            }

            return true;
        }
开发者ID:4ptiv4,项目名称:GenesisSharp,代码行数:30,代码来源:TNLConnection.cs


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