當前位置: 首頁>>代碼示例>>C#>>正文


C# ByteBuffer.PutUShort方法代碼示例

本文整理匯總了C#中System.ByteBuffer.PutUShort方法的典型用法代碼示例。如果您正苦於以下問題:C# ByteBuffer.PutUShort方法的具體用法?C# ByteBuffer.PutUShort怎麽用?C# ByteBuffer.PutUShort使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在System.ByteBuffer的用法示例。


在下文中一共展示了ByteBuffer.PutUShort方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: PutBody

 protected override void PutBody(ByteBuffer buf)
 {
     buf.Put(0x01);
     buf.PutInt(0);
     buf.PutInt(0);
     buf.Put(0x02);
     buf.PutUShort(StartPosition);
     buf.Put(0);
     #if DEBUG
     Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:12,代碼來源:GetFriendListPacket.cs

示例2: InitSendFileContent

 /// <summary>
 /// 初始化請求發送文件包的其餘部分
 /// </summary>
 /// <param name="buf">The buf.</param>
 private void InitSendFileContent(ByteBuffer buf)
 {
     // 17 - 19. 懷疑也和發送消息包相同,但是在這種情況中,這部分沒有使用,為全0,一共11個0字節
     buf.PutLong(0);
     buf.PutChar((char)0);
     buf.Put((byte)0);
     // 我們先嘗試UDP方式
     buf.Put((byte)TransferType);
     buf.Put((byte)0x0);
     if (FakeIp)
     {
         buf.PutInt(0);
         buf.PutChar((char)0);
     }
     else
     {
         // 四個字節的發送者IP,這是外部IP
         buf.Put(user.IP);
         // 發送者端口
         buf.PutChar((char)user.Port);
     }
     // 直接端口
     buf.PutUShort(DirectPort);
     buf.PutInt(0);
     buf.PutChar((char)0);
     buf.Put((byte)0x20);
     buf.Put(DELIMIT);
     buf.Put(Utils.Util.GetBytes(FileName));
     buf.Put(DELIMIT);
     buf.Put(Utils.Util.GetBytes(FileSize));
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:35,代碼來源:SendIMPacket.cs

示例3: InitSendFileAcceptContent

 /// <summary>初始化同意接收文件包的其餘部分
 /// 	<remark>abu 2008-02-29 </remark>
 /// </summary>
 /// <param name="buf">The buf.</param>
 private void InitSendFileAcceptContent(ByteBuffer buf)
 {
     // 17 - 19. 懷疑也和發送消息包相同,但是在這種情況中,這部分沒有使用,為全0,一共11個0字節
     buf.PutLong(0);
     buf.PutChar((char)0);
     buf.Put((byte)0);
     // 我們先嘗試UDP方式
     buf.Put((byte)TransferType);
     buf.Put((byte)0x0);
     // 四個字節的發送者IP,這是外部IP
     buf.Put(user.IP);
     // 發送者端口
     buf.PutChar((char)user.Port);
     // 監聽端口,含義未知,為連接服務器的端口,先隨便寫一個值
     buf.PutUShort(DirectPort);
     // 後麵全0
     buf.PutInt(0);
     buf.PutChar((char)0);
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:23,代碼來源:SendIMPacket.cs

示例4: InitNotifyFilePortUDP

 /// <summary>
 /// 初始化IP信息通知包
 /// </summary>
 /// <param name="buf">The buf.</param>
 private void InitNotifyFilePortUDP(ByteBuffer buf)
 {
     // 17 - 19. 懷疑也和發送消息包相同,但是在這種情況中,這部分沒有使用,為全0,一共11個0字節
     buf.PutLong(0);
     buf.PutChar((char)0);
     buf.Put((byte)0);
     // 我們先嘗試UDP方式
     buf.Put((byte)TransferType);
     buf.Put((byte)0x0);
     // 四個字節的發送者IP,這是外部IP
     buf.Put(user.IP);
     // 發送者端口
     buf.PutChar((char)user.Port);
     // 監聽端口,含義未知,為連接服務器的端口,先隨便寫一個值
     buf.PutUShort(DirectPort);
     // 真實IP和第二個端口
     buf.Put(LocalIp);
     buf.PutUShort(LocalPort);
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:23,代碼來源:SendIMPacket.cs

示例5: PutBody

        protected override void PutBody(ByteBuffer buf)
        {
            if (MessageId == 0)
            {
                MessageId = (ushort)this.Sequence;
            }

            // 發送者QQ號
            buf.PutInt(user.QQ);
            // 接收者QQ號
            //00 00 00 08 00 01 00 04 00 00 00 00  09SP1 changes
            buf.PutInt(Receiver);
            buf.PutInt(0x00000008);
            buf.PutInt(0x00010004);
            buf.PutInt(0x00000000);

            // 發送者QQ版本
            buf.PutChar(Source);
            // 發送者QQ號
            buf.PutInt(user.QQ);
            // 接收者QQ號
            buf.PutInt(Receiver);
            // 文件傳輸會話密鑰
            buf.Put(user.QQKey.SessionKey);
            // 消息類型
            buf.PutUShort((ushort)MessageType);
            // 順序號
            if (SessionId == 0)
                buf.PutChar(Sequence);
            else
                buf.PutUShort(SessionId);
            // 發送時間
            int time = (int)(Utils.Util.GetTimeMillis(DateTime.Now) / 1000);
            buf.PutInt(time);
            // 發送者頭像
            char face = (char)user.ContactInfo.Head;
            buf.PutChar(face);
            // 字體信息,設成1
            buf.PutInt(1);
            if (MessageType != NormalIMType.Vibration)
            {
                // 暫時為如來神掌做的設置
                if (FakeIp)
                    buf.PutInt(0);
                else
                {
                    // 分片數
                    buf.Put((byte)TotalFragments);
                    // 分片序號
                    buf.Put((byte)FragmentSequence);
                    // 消息id
                    buf.PutUShort(MessageId);
                }
            }
            // 判斷消息類型
            switch (MessageType)
            {
                case NormalIMType.TEXT:
                    InitTextContent(buf);
                    break;
                case NormalIMType.UDP_REQUEST:
                    InitSendFileContent(buf);
                    break;
                case NormalIMType.ACCEPT_UDP_REQUEST:
                    InitSendFileAcceptContent(buf);
                    break;
                case NormalIMType.REJECT_UDP_REQUEST:
                case NormalIMType.REJECT_TCP_REQUEST:
                    InitSendFileRejectContent(buf);
                    break;
                case NormalIMType.NOTIFY_IP:
                    InitNotifyFilePortUDP(buf);
                    break;
                case NormalIMType.REQUEST_CANCELED:
                    InitConnectionCanceled(buf);
                    break;
                case NormalIMType.ARE_YOU_BEHIND_FIREWALL:
                    InitPleaseConnectMe(buf);
                    break;
                case NormalIMType.Vibration:
                    InitVibrationContent(buf);
                    break;
            }
            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
        }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:87,代碼來源:SendIMPacket.cs

示例6: PutBody

        protected override void PutBody(ByteBuffer buf)
        {
            if (Code != 0)
            {
                buf.Put(0x02);//sub cmd
                buf.PutUShort(Type);
                buf.PutInt(QQ);
                buf.PutUShort(4);
                buf.PutInt(Code);
                buf.PutUShort((ushort)VCodeSession.Length);
                buf.Put(VCodeSession);

            }
            else
            {
                buf.Put(0x01);//sub cmd
                buf.PutUShort(Type);
                buf.PutInt(QQ);
            }
            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
        }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:23,代碼來源:RequestTokenPacket.cs

示例7: PutBody

        protected override void PutBody(ByteBuffer buf)
        {
            switch (SubCommand)
            {
                case AddFriendAuthSubCmd.Approve:
                case AddFriendAuthSubCmd.ApproveAndAdd:
                case AddFriendAuthSubCmd.Reject:
                case AddFriendAuthSubCmd.NoAuth:
                    //03 (01表示不需要驗證時的加對方為好友,03表示接受並加對方為好友,04表示隻接受,05表示拒絕)
                    //25 D0 1F E1
                    //00 00 00
                    buf.Put((byte)SubCommand);
                    buf.PutInt(To);
                    buf.PutUShort(0);//00 00
                    byte[] b = Utils.Util.GetBytes(Message);
                    buf.Put((byte)b.Length);//長度
                    buf.Put(b);
                    break;
                case AddFriendAuthSubCmd.Add:
                case AddFriendAuthSubCmd.AnswerAdd:
                case AddFriendAuthSubCmd.NeedAuthor:
                    buf.Put((byte)SubCommand);
                    buf.PutInt(To);
                    buf.Put((byte)ReverseAdd);//00
                    buf.Put((byte)DestGroup);//00
                    buf.PutUShort((ushort)AddFriendToken.Length);
                    buf.Put(AddFriendToken);
                    if (AnswerToken != null)
                    {
                        buf.PutUShort((ushort)AnswerToken.Length);
                        buf.Put(AnswerToken);
                    }
                    buf.Put(0x01);
                    buf.Put(0x00);
                    if (!string.IsNullOrEmpty(Message))
                    {
                        b = Utils.Util.GetBytes(Message);
                        buf.Put((byte)b.Length);
                        buf.Put(b);
                    }
                    break;
                default:
                    throw new Exception("unknown AddFriendAuthSubCmd=0x" + SubCommand.ToString("X"));

            }

            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
        }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:50,代碼來源:AddFriendAuthorizePacket.cs

示例8: PostFill

 protected override void PostFill(ByteBuffer buf, int startPos)
 {
     // 如果是tcp包,到包的開頭處填上包長度,然後回到目前的pos
     if (!user.IsUdp)
     {
         int len = buf.Length - startPos;
         buf.PutUShort(startPos, (ushort)len);
     }
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:9,代碼來源:BasicOutPacket.cs

示例9: PutBody

        /// <summary>
        /// Puts the body.
        /// </summary>
        /// <param name="buf">The buf.</param>
        protected override void PutBody(ByteBuffer buf)
        {
            // 命令類型
            buf.Put((byte)SubCommand);
            // 群內部ID
            buf.PutInt(ClusterId);
            // 後麵數據的長度,這個長度需要根據後麵的長度計算才能知道,
            // 所以先占個位置
            //int pos = buf.Position;
            //buf.PutChar((char)0);

            ByteBuffer MsgBuf = new ByteBuffer();

            // 未知的2字節
            MsgBuf.PutChar((char)1);
            // 分片數
            MsgBuf.Put((byte)TotalFragments);
            // 分片序號
            MsgBuf.Put((byte)FragmentSequence);
            if (MessageId == 0)
            {
                MessageId = (ushort)this.Sequence;
            }
            // 消息id
            MsgBuf.PutUShort(MessageId);
            // 未知4字節
            MsgBuf.PutInt(0);

            // 以0結束的消息,首先我們要根據用戶設置的message,解析出一個網絡可發送的格式
            // 這一步比較麻煩,暫時想不到好的辦法
            MsgBuf.PutInt(0x4D534700);//"MSG"
            MsgBuf.PutInt(0);
            // 發送時間
            int time = (int)(Utils.Util.GetTimeMillis(DateTime.Now) / 1000);
            MsgBuf.PutInt(time);
            MsgBuf.PutInt((MessageId << 16) | MessageId);//maybe a random interger
            MsgBuf.PutInt(0);
            MsgBuf.PutInt(0x09008600);
            byte[] Font_Name = Utils.Util.GetBytes(FontStyle.FontName);
            MsgBuf.PutUShort((ushort)Font_Name.Length);
            MsgBuf.Put(Font_Name);
            MsgBuf.PutUShort(0);
            MsgBuf.Put(0x01);
            MsgBuf.PutUShort((ushort)(MessageBytes.Length + 3));
            MsgBuf.Put(1);
            MsgBuf.PutUShort((ushort)(MessageBytes.Length));

            // 寫入消息正文字節數組
            if (MessageBytes != null)
                MsgBuf.Put(MessageBytes);
            //if (FragmentSequence == TotalFragments - 1)
            //{
            //    MsgBuf.Put((byte)0x20);
            //}
            byte[] MsgData = MsgBuf.ToByteArray();
            buf.PutUShort((ushort)MsgData.Length);
            buf.Put(MsgData);
            MsgData = null;
            MsgBuf = null;

            //byte[] msgBytes = null;
            //int j, i = 0;
            //while ((j = Message.IndexOf((char)FaceType.DEFAULT, i)) != -1)
            //{
            //    string sub = Message.Substring(i, j);
            //    if (!sub.Equals(""))
            //    {
            //        msgBytes = Utils.Util.GetBytes(sub);
            //        buf.Put(msgBytes);
            //    }
            //    buf.Put((byte)FaceType.DEFAULT);
            //    buf.Put((byte)(Message[j + 1] & 0xFF));
            //    i = j + 2;
            //}
            //if (i < Message.Length)
            //{
            //    string sub = Message.Substring(i);
            //    msgBytes = Utils.Util.GetBytes(sub);
            //    buf.Put(msgBytes);
            //}

            //// 隻有最後一個分片有空格和字體屬性
            //if (FragmentSequence == TotalFragments - 1)
            //{
            //    buf.Put((byte)0x20);
            //    FontStyle.Write(buf);
            //}
            // 寫入長度
            //int cur = buf.Position;
            //buf.Position = pos;
            //buf.PutChar((char)(cur - pos - 2));
            //buf.Position = cur;
            #if DEBUG
            Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
            #endif
        }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:100,代碼來源:ClusterSendIMExPacket.cs

示例10: Write

 /// <summary>
 /// </summary>
 /// <param name="buf">The buf.</param>
 public void Write(ByteBuffer buf)
 {
     buf.PutUShort(fontFlag);
     // 字體顏色紅綠籃
     buf.Put((byte)Red);
     buf.Put((byte)Green);
     buf.Put((byte)Blue);
     // 一個未知字節
     buf.Put((byte)0);
     // 消息編碼
     buf.PutUShort((ushort)EncodingCode);
     // 字體
     byte[] fontBytes = Utils.Util.GetBytes(FontName);
     buf.Put(fontBytes);
     // 字體屬性長度(包括本字節)
     buf.Put((byte)(fontBytes.Length + 9));
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:20,代碼來源:FontStyle.cs

示例11: PutBody

 protected override void PutBody(ByteBuffer buf)
 {
     // 命令類型
     buf.Put((byte)SubCommand);
     // 群類型
     buf.Put((byte)Type);
     // 父群ID
     buf.PutInt(ParentClusterId);
     // 群內部ID
     buf.PutInt(ClusterId);
     // 後麵數據的長度,這個長度需要根據消息長度和字體名稱長度計算才能知道,
     // 所以先來產生消息和字體名稱字節數組,先占個位置
     int pos = buf.Position;
     buf.PutChar((char)0);
     // 未知2字節
     buf.PutChar((char)1);
     // 分片數
     buf.Put((byte)TotalFragments);
     // 分片序號
     buf.Put((byte)FragmentSequence);
     // 消息id
     buf.PutUShort(MessageId);
     // 未知4字節
     buf.PutInt(0);
     // 以0結束的消息,首先我們要根據用戶設置的message,解析出一個網絡可發送的格式
     //    這一步比較麻煩,暫時想不到好的辦法
     byte[] msgBytes = null;
     int j, i = 0;
     while ((j = Message.IndexOf((char)FaceType.DEFAULT, i)) != -1)
     {
         String sub = Message.Substring(i, j);
         if (!sub.Equals(""))
         {
             msgBytes = Utils.Util.GetBytes(sub);
             buf.Put(msgBytes);
         }
         buf.Put((byte)FaceType.DEFAULT);
         buf.Put((byte)(Message[j + 1] & 0xFF));
         i = j + 2;
     }
     if (i < Message.Length)
     {
         String sub = Message.Substring(i);
         msgBytes = Utils.Util.GetBytes(sub);
         buf.Put(msgBytes);
     }
     // 隻有最後一個分片有空格和字體屬性
     if (FragmentSequence == TotalFragments - 1)
     {
         buf.Put((byte)0x20);
         FontStyle.Write(buf);
     }
     // 寫入長度
     int cur = buf.Position;
     buf.Position = pos;
     buf.PutChar((char)(cur - pos - 2));
     buf.Position = cur;
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:58,代碼來源:ClusterSendTempIMPacket.cs

示例12: PutBody

 protected override void PutBody(ByteBuffer buf)
 {
     buf.Put((byte)SubCommand);
     buf.PutUShort(StartPosition);
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:5,代碼來源:UserPropertyOpPacket.cs

示例13: PutBody

 protected override void PutBody(ByteBuffer buf)
 {
     // 設置狀態
     buf.Put((byte)Status);
     buf.PutInt(0);//00 00 00 00
     buf.PutInt(ShowFakeCam ? 1 : 0);// 顯示虛擬攝像頭
     buf.PutUShort(0);
     #if DEBUG
     Client.LogManager.Log(ToString() + " " + Utils.Util.ToHex(buf.ToByteArray()));
     #endif
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:11,代碼來源:ChangeStatusPacket.cs

示例14: InitTextContent

        /// <summary> 
        /// 初始化普通消息包的其餘部分
        /// </summary>
        /// <param name="buf">The buf.</param>
        private void InitTextContent(ByteBuffer buf)
        {
            // 消息方式,是發送的,還是自動回複的,1字節
            buf.Put((byte)ReplyType);
            //09 add
            buf.PutInt(0x4D534700);//"MSG"
            buf.PutInt(0);
            // 發送時間
            int time = (int)(Utils.Util.GetTimeMillis(DateTime.Now) / 1000);
            buf.PutInt(time);
            buf.PutInt((MessageId << 16) | MessageId);//maybe a random interger
            buf.PutInt(0);
            buf.PutInt(0x09008600);
            byte[] Font_Name = Utils.Util.GetBytes(FontStyle.FontName);
            buf.PutUShort((ushort)Font_Name.Length);
            buf.Put(Font_Name);
            buf.PutUShort(0);
            buf.Put(0x01);
            buf.PutUShort((ushort)(Message.Length+3));
            buf.Put(1);
            buf.PutUShort((ushort)(Message.Length));

            // 寫入消息正文字節數組
            if (Message != null)
                buf.Put(Message);
            //// 最後一個分片時追加空格
            //if (FragmentSequence == TotalFragments - 1)
            //    buf.Put((byte)0x20);
            //// 消息尾部,字體修飾屬性
            //FontStyle.Write(buf);
        }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:35,代碼來源:SendIMPacket.cs

示例15: PutBody

 protected override void PutBody(ByteBuffer buf)
 {
     // 短消息序號
     buf.PutUShort(MessageSequence);
     // 未知2字節
     buf.PutChar((char)0);
     // 未知4字節
     buf.PutInt(0);
     // 發送者昵稱
     byte[] b = Utils.Util.GetBytes(SenderName);
     if (b.Length > QQGlobal.QQ_MAX_SMS_SENDER_NAME)
     {
         buf.Put(b, 0, QQGlobal.QQ_MAX_SMS_SENDER_NAME);
     }
     else
     {
         buf.Put(b);
         int stuff = QQGlobal.QQ_MAX_SMS_SENDER_NAME - b.Length;
         while (stuff-- > 0)
             buf.Put((byte)0);
     }
     // 未知1字節
     buf.Put((byte)0x01);
     // 發送模式
     buf.Put((byte)SendMode);
     // 內容類型
     buf.Put((byte)ContentType);
     // 內容編號
     buf.PutInt(ContentId);
     // 未知1字節
     buf.Put((byte)0x01);
     // 手機個數
     if (ReceiverMobile == null)
         buf.Put((byte)0);
     else
     {
         buf.Put((byte)ReceiverMobile.Count);
         foreach (String mobile in ReceiverMobile)
         {
             b = Utils.Util.GetBytes(mobile);
             if (b.Length > QQGlobal.QQ_MAX_SMS_MOBILE_LENGTH)
             {
                 buf.Put(b, 0, QQGlobal.QQ_MAX_SMS_MOBILE_LENGTH);
             }
             else
             {
                 buf.Put(b);
                 int stuff = QQGlobal.QQ_MAX_SMS_MOBILE_LENGTH - b.Length;
                 while (stuff-- > 0)
                     buf.Put((byte)0);
             }
             // 未知的2字節
             buf.PutChar((char)0);
             // 未知的1字節
             buf.Put((byte)0);
         }
     }
     // QQ號碼個數
     if (ReceiverQQ == null)
         buf.Put((byte)0);
     else
     {
         buf.Put((byte)ReceiverQQ.Count);
         foreach (int qq in ReceiverQQ)
             buf.PutInt(qq);
     }
     // 未知1字節
     buf.Put((byte)0x03);
     // 消息
     if (Message == null)
         buf.PutChar((char)0);
     else
     {
         buf.PutChar((char)Message.Length);
         // 消息
         buf.Put(Message);
     }
 }
開發者ID:leaker,項目名稱:fuhj-widgets,代碼行數:78,代碼來源:SendSMSPacket.cs


注:本文中的System.ByteBuffer.PutUShort方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。