예제 #1
0
        internal static ulong IPPort2Long(string _ip, int _port)
        {
            byte[] _buffer = new byte[8];

            ushort[] ipChunks = new ushort[4];
            string[] chunks   = _ip.Split('.');
            if (chunks.Length == 4)
            {
                for (int i = 0; i < 4; i++)
                {
                    ipChunks[i] = ushort.Parse(chunks[i]);
                }
            }

            // IP 4
            for (int i = 0; i < 4; i++)
            {
                _buffer[i] = (byte)ipChunks[i];
            }

            // Port 4
            HelperTools.Int32Bytes(_buffer, 4, _port);

            return(BitConverter.ToUInt64(_buffer, 0));
        }
예제 #2
0
        private void WriteIdx()
        {
            // Write index
            HelperTools.Int32Bytes(idxBuffer, 0, secTime);
            HelperTools.Long2Bytes(idxBuffer, 4, file.Position);

            idxFile.Write(idxBuffer, 0, HelperTools.idxIndexSize);
        }
예제 #3
0
        private void FillHeader(long _time, string _ID, int _size, byte[] _buffer, ushort[] ipChunks, int _port)
        {
            // Time 8
            HelperTools.Long2Bytes(_buffer, 0, _time);
            // Hashed ID 4
            HelperTools.Int32Bytes(_buffer, 8, HelperTools.GetDeterministicHashCode(_ID));
            // IP 4
            for (int i = 0; i < 4; i++)
            {
                _buffer[12 + i] = (byte)ipChunks[i];
            }

            // Port 4
            HelperTools.Int32Bytes(_buffer, 16, _port);
            // Size 4
            HelperTools.Int32Bytes(_buffer, 20, _size);
        }
예제 #4
0
        private void FillIDXHeader(FileStream _idxFile)
        {
            byte[] idxHeader = new byte[4096];
            int    i         = 0;

            // Write idx Header
            // Time of recording
            i += HelperTools.Long2Bytes(idxHeader, i, HelperTools.millisFromEpochNow());
            // Interval
            i += HelperTools.Int32Bytes(idxHeader, i, secsIdxInterval);
            // Number of peers
            i += HelperTools.Int32Bytes(idxHeader, i, udpListeners.Count);
            foreach (RecPeerInfo p in udpListeners.Values)
            {
                i += HelperTools.StringWithLength2Bytes(idxHeader, i, p.ID);
                i += HelperTools.StringWithLength2Bytes(idxHeader, i, p.IP);
                i += HelperTools.Int32Bytes(idxHeader, i, p.Port);
            }

            idxFile.Write(idxHeader, 0, i);
        }