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)); }
private void WriteIdx() { // Write index HelperTools.Int32Bytes(idxBuffer, 0, secTime); HelperTools.Long2Bytes(idxBuffer, 4, file.Position); idxFile.Write(idxBuffer, 0, HelperTools.idxIndexSize); }
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); }
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); }