Beispiel #1
0
        public byte[] ToArray()
        {
            var woffset = 0;
            var ret     = new byte[Size];

            ret.CopyAndIncr(BitConverter.GetBytes(HighestVersion), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(Services), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(Timestamp), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(RecvServices), ref woffset);
            ret.CopyAndIncr(RecvIp.MapToIPv6().GetAddressBytes(), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(RecvPort), ref woffset, true);
            ret.CopyAndIncr(BitConverter.GetBytes(TransServices), ref woffset, true);
            ret.CopyAndIncr(TransIp.MapToIPv6().GetAddressBytes(), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(TransPort), ref woffset, true);
            ret.CopyAndIncr(BitConverter.GetBytes(Nonce), ref woffset);
            ret.CopyAndIncr(UserAgentLength.ToArray(), ref woffset);
            ret.CopyAndIncr(System.Text.Encoding.ASCII.GetBytes(UserAgent), ref woffset);
            ret.CopyAndIncr(BitConverter.GetBytes(StartHeight), ref woffset);

            ret[woffset] = Relay ? (byte)0x01 : (byte)0x00;

            return(ret);
        }
Beispiel #2
0
        public byte[] ToArray()
        {
            var pl = new byte[85 + UserAgentLength.Size + UserAgentLength];

            var hv = BitConverter.GetBytes(HighestVersion);

            Buffer.BlockCopy(hv, 0, pl, 0, hv.Length);

            var sv = BitConverter.GetBytes(Services);

            Buffer.BlockCopy(sv, 0, pl, 4, sv.Length);

            var ts = BitConverter.GetBytes(Timestamp);

            Buffer.BlockCopy(ts, 0, pl, 12, ts.Length);

            var rs = BitConverter.GetBytes(RecvServices);

            Buffer.BlockCopy(rs, 0, pl, 20, rs.Length);

            var ri = RecvIp.GetAddressBytes();

            Buffer.BlockCopy(ri, 0, pl, 28, ri.Length);

            var rp = BitConverter.GetBytes(RecvPort);

            Array.Reverse(rp);
            Buffer.BlockCopy(rp, 0, pl, 44, rp.Length);

            var tss = BitConverter.GetBytes(TransServices);

            Buffer.BlockCopy(tss, 0, pl, 46, tss.Length);

            var ti = TransIp.GetAddressBytes();

            Buffer.BlockCopy(ti, 0, pl, 54, ti.Length);

            var tp = BitConverter.GetBytes(TransPort);

            Array.Reverse(tp);
            Buffer.BlockCopy(tp, 0, pl, 70, tp.Length);

            var nn = BitConverter.GetBytes(Nonce);

            Buffer.BlockCopy(nn, 0, pl, 72, nn.Length);

            var ul = UserAgentLength.ToArray();

            Buffer.BlockCopy(ul, 0, pl, 80, ul.Length);

            var ua = Encoding.ASCII.GetBytes(UserAgent);

            Buffer.BlockCopy(ua, 0, pl, 80 + UserAgentLength.Size, ua.Length);

            var sh = BitConverter.GetBytes(StartHeight);

            Buffer.BlockCopy(sh, 0, pl, 80 + UserAgentLength.Size + UserAgentLength, sh.Length);

            pl[pl.Length - 1] = Relay ? (byte)0x01 : (byte)0x00;

            return(pl);
        }