Exemple #1
0
        /// <summary>
        /// 生成一个 ClientExitNetwork 消息。
        /// </summary>
        /// <param name="localEP">消息源的端点。</param>
        /// <returns>创建的 ClientExitNetwork 消息。</returns>
        public static KMessage ClientExitNetwork(KEndPoint localEP)
        {
            var message = KMessage.CreateEmptyMessage();

            message.Header.Code           = KMessageCode.ClientExitNetwork;
            message.Header.SourceEndPoint = localEP;
            message.Header.MessageID      = GetMessageHash();
            return(message);
        }
Exemple #2
0
        /// <summary>
        /// 生成一个 ReportAlive 消息。
        /// </summary>
        /// <param name="localEP">消息源的端点。</param>
        /// <returns>创建的 ReportAlive 消息。</returns>
        public static KMessage ReportAlive(KEndPoint localEP)
        {
            var message = KMessage.CreateEmptyMessage();

            message.Header.Code           = KMessageCode.ReportAlive;
            message.Header.SourceEndPoint = localEP;
            message.Header.MessageID      = GetMessageHash();
            return(message);
        }
Exemple #3
0
        /// <summary>
        /// 生成一个 ClientEnterNetwork 消息。
        /// </summary>
        /// <param name="localEP">消息源的端点。</param>
        /// <param name="realPort">非零表示这是接入点要连接接入点,该端口是本机正在监听的端口;零表示只是普通用户连接接入点。</param>
        /// <returns>创建的 ClientEnterNetwork 消息。</returns>
        public static KMessage ClientEnterNetwork(KEndPoint localEP, ushort realPort)
        {
            var message = KMessage.CreateEmptyMessage();

            message.Header.Code           = KMessageCode.ClientEnterNetwork;
            message.Header.SourceEndPoint = localEP;
            message.Header.MessageID      = GetMessageHash();

            BEncodedDictionary data = new BEncodedDictionary();

            data.Add("message handled", 0);
            data.Add("real port", realPort);
            message.Content = KMessageContent.FromByteArray(data.Encode());
            return(message);
        }
Exemple #4
0
        /// <summary>
        /// 生成一个 GotPeer 消息。
        /// </summary>
        /// <param name="localEP">消息源的端点。</param>
        /// <param name="infoHash">用户所持有的 InfoHash。</param>
        /// <param name="bitTorrentClientPort">用户所监听的端口(即 BitTorrent 客户端的监听端口)。</param>
        /// <returns>创建的 GotPeer 消息。</returns>
        public static KMessage GotPeer(KEndPoint localEP, InfoHash infoHash, ushort bitTorrentClientPort)
        {
            var message = KMessage.CreateEmptyMessage();

            message.Header.Code           = KMessageCode.GotPeer;
            message.Header.SourceEndPoint = localEP;
            message.Header.MessageID      = GetMessageHash();

            BEncodedDictionary data = new BEncodedDictionary();

            data.Add("infohash", infoHash.ToByteArray());
            data.Add("bt client port", bitTorrentClientPort);
            message.Content = KMessageContent.FromByteArray(data.Encode());
            return(message);
        }