2016-07-20 8 views
-2

私は、ソースからデータをチャンクで読み込み、結果全体をバイト配列に格納する作業をしています。具体的には、後で "Socket.Receive"を呼び出す必要があります。私は、事前に最終的なサイズでバイト配列を割り当てたいと思うし、毎回データをコピーする配列内の位置を与える。これは余分なコピーを避けるためです。 C++では、配列のオフセットを与えるだけです。バイト配列の途中でReceiveメソッドに位置を与える方法を理解できませんでした...C#バイト配列 - 中に書き込む

これはC#で行うことができますか?

+2

[見た](見たところ)(見たところ)(https://msdn.microsoft.com/en-us/library/w3xtz6a5(v=vs.110).aspx )? –

+0

データの全長を知っていて、すべてを1つの配列に格納したい場合、 'Array.Copy'を使うと、ソースオフセットとデスティネーションオフセットを使ってある配列の内容を別の配列にコピーすることができます。 –

+0

@YeldarKurmangaliyev *は動作しますが、*この場合は必要ありません。 –

答えて

0

Receiveには、読み込みのオフセットとカウントを受け入れるオーバーロードがあります。 https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receive(v=vs.110).aspx - 具体的な例:https://msdn.microsoft.com/en-us/library/w3xtz6a5(v=vs.110).aspx

+0

正確に私が必要なもの、ありがとう! – user4212919

+0

@ user4212919ヒント:Visual Studioを使用していると仮定し、 '.'(' socket.Whatever')を押すとintellisenseポップアップが表示されます。メソッド名を解決した場合は、上矢印と下矢印を押して使用可能なすべてのオーバーロードを表示できます。基本的には、これらの情報はすべて**エディタで直接入手できます** http://i.stack.imgur.com/g72P2.png –

関連する問題