程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【C#】探索數據傳輸對象1,

【C#】探索數據傳輸對象1,

編輯:C#入門知識

【C#】探索數據傳輸對象1,


image

 

什麼是“從當前流中讀取一個字符串。字符串有長度前綴,一次 7 位地被編碼為整數。”

來探索一下:

寫一段簡單的程序:

FileStream fs= new FileStream("d:\\qqq.txt",FileMode.Create);
          var bw = new BinaryWriter(fs, Encoding.UTF8);//通常情況下可以不寫編碼 這裡加上便於理解
          bw.Write("hello world!");
          Console.WriteLine("成功寫入");
          bw.Close();
          fs.Close();


          FileStream fs2 = new FileStream("d:\\qqq.txt", FileMode.Open);
          var br = new BinaryReader(fs, Encoding.UTF8);
          Console.WriteLine(br.ReadString());

 

1.在寫入文件的時候指定或默認編碼,這樣字符就可以轉換為字符集對應編碼(ASCII 八進制 十六進制)

傳輸或者保存的時候就會保存為相應的標准可傳輸的進制(再從這些進制轉到二進制,網絡傳輸用二進制)

2.用編輯器打開時,默認的會給我們轉到10進制,轉成字符集所對應的顯示文字。(計算機很聰明 做事很得體 妹子都喜歡這樣的男朋友吧)

ps:

 

 

來看下剛才寫得qqq.txt文件,

用UE查看 開頭)16進制 0C = 10進制 12,正好是字符長度.

image

來看一下 BinaryWriter.Write 

 

image

讀寫遙相呼應,配合使用。

其他的重載也是一樣的用法。

==================================進階研究==================================

byte[] buffer = new byte[512];
                       while ((size = netstream.Read(buffer, 0, buffer.Length))>0)
                       {
                           fs.Write(buffer, 0, size);
                           len += size;
                       }

 

var br = new BinaryReader(netstream);
Console.WriteLine(br.ReadString());

 

從同一個stream上取數據這兩個方法 得到結果卻不一樣, 為什麼呢?

Read 只會返回byte[]數據對象,  readstring 只能得到BinaryWriter進去的數據。

BinaryWriter 不寫入內容時 readstring為何會出現亂碼?

來試驗幾種情況

image

 

在不寫BinaryWriter  情況下,接收端處理 readstring 將會把開頭部分數據讀到readstring中,剩余數據被read讀出來。

 

 

image

 

傳輸開始後 netstream將會被監聽

 

image

 

 

發送端加了using後  都不需要關心服務端 接收到的bytes 長度是否大於0,(猜想傳輸監聽有兩種方法1通過是否還有數據傳過來,2.close、dispose狀態的級別更高,直接關閉掉)

 

image

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved