底層通訊小結

來源:互聯網
上載者:User

標籤:style   color   使用   os   資料   io   

  1. cmd的len就是真實的len,而不需要/2了;
  2. timer的定時任務,start並不執行,只有在第一個interval時間過後才會第一次執行;
  3. paddLeft的使用:"Jim",使用padLeft(5,‘0‘)之後,就是00Jim;
    1. bit(位)是傳輸單位,二進位的0、1;Byte(位元組)是最小的資料存放區單位;1Byte = 8Bit;一個英文字母、數字、半形標點都是1Byte(位元組);在傳遞命令中,路徑就是
      1)Encoding.UTF8.GetBytes(cuseeion),將文字轉換為位元組;
      2)就每一個位元組轉換為16進位
      StringBuilder sb = newStringBuilder(data.Length * 3);

foreach (byte b in data)

????sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘));

return sb.ToString().ToUpper();

3)將

  1. 使用ByteArrayToHexString(bb.ToByteArray())的方法,可以獲得最終傳輸到命令伺服器的內容(00002715XXX);對於協議中描述的"FFFF0A000000000001014D025B"而言,其實已經是經過16進位編碼的,所以對於把這部分壓入到ByteBuffer,直接用HexStringToByteArray(" FFFF0A000000000001014D025B")即可;
  2. 將字串轉換為byte[]其實是對字串的char進行ASCII編碼(基於10進位編碼),在ByteArrayToHexString中因為採用了16進位進行編碼,這就有問題:兩位的十進位位元組可能一位16進位位元組即可,於是採用PadLeft進行補位處理,這也是我們看到的在協議中定義的比如MAC地址32位(位元組,或者說字母數字),但是其實是64位長,就是在轉成byte[]轉16進位的時候,固定做兩位長度。
  3. Socket對象中的SendTimeout和ReceiveTimeout預設值是0,代表無線等待;有的時候我們可以通過設定逾時時間來判定操作的成功與否

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.