none
請教byte連接的問題? RRS feed

  • 問題

  • 各位好:
    最近在寫網路程式,想要以填資料的方式建立封包並送出,假設我想要把Byte1和Byte2連接起來放進Bytes,
    除了使用迴圈一個一個放之外,.net framework是否有提供函數可以直接將資料連接?

    byte[] Bytes = new byte[20];
    byte[] Bytes1 = new byte[5];
    byte[] Bytes2 = new byte[5];

    Thanks for any message.
    Josh
    2008年6月5日 下午 10:04

解答

  • HI,

     

    您可以這樣做:

     

                byte[] Bytes = new byte[20];
                byte[] Bytes1 = { 1, 2, 3, 4, 5 };
                byte[] Bytes2 = { 6, 7, 8, 9, 10};

                Array.Copy(Bytes1, 0, Bytes, 0, 5);
                Array.Copy(Bytes2, 0, Bytes, 5, 5);

    tihs

     

    2008年6月6日 上午 01:17
  • 通常量小的話用 Array.Copy 。

     

    在網路應用通常直接用 MemoryStream.Write ,而且 Socket 也使用 NetworkStream 來輸出或讀入,用法差不多。

     

    2008年6月6日 上午 01:31
  • 這篇以非同步的方式複製資料流,例如從 NetworkStream 即時複製到 MemoryStream ,我是覺得可以一看。
     
    .NET 大小事:非同步資料流的處理

     

    2008年6月10日 下午 03:31

所有回覆

  • HI,

     

    您可以這樣做:

     

                byte[] Bytes = new byte[20];
                byte[] Bytes1 = { 1, 2, 3, 4, 5 };
                byte[] Bytes2 = { 6, 7, 8, 9, 10};

                Array.Copy(Bytes1, 0, Bytes, 0, 5);
                Array.Copy(Bytes2, 0, Bytes, 5, 5);

    tihs

     

    2008年6月6日 上午 01:17
  • 通常量小的話用 Array.Copy 。

     

    在網路應用通常直接用 MemoryStream.Write ,而且 Socket 也使用 NetworkStream 來輸出或讀入,用法差不多。

     

    2008年6月6日 上午 01:31
  • 這篇以非同步的方式複製資料流,例如從 NetworkStream 即時複製到 MemoryStream ,我是覺得可以一看。
     
    .NET 大小事:非同步資料流的處理

     

    2008年6月10日 下午 03:31
  • 您好:
    我目前是直接使用Array.Copy的方式去填封包,封包裡面的資料為512 Bytes,所以處理速度還算理想,
    會使用Array.Copy的原因,因為我是使用UdpClient這個類別來建立UDP Socket,
    所以好像不能用NetworkStream來讀取網路資料,印象中NetworkStream好像只能用在TcpListener。
    感謝您分享『非同步資料處理』的文章,因為我的接收端是PDA,NETCF當中好像不支援非同步資料處理,
    最後還是謝謝您的回答,感謝。

    Josh
    2008年6月10日 下午 09:49