2017-10-31 4 views
-1

私は1024バイトのチャンクにファイルを分割する必要があるUDP protcol実装のコードを書いています。次に、各パケットのチェックサムを計算し、シーケンス番号を付けてヘッダ情報として追加し、パケットを受信者に送信します。私はファイルを塊にしてチェックサムを計算することを知っています。しかし、ヘッダー情報とデータパケットを連結するには、私はmemcatを使用する必要がありますか?誰も私にどのようにCでそれを行うことができます示唆することはできますか?C言語のUDPに基づいたソケットプログラミング

+0

あなたはもう少し情報を与えることができますか?今まで何をしていたのか?あなたのコードを置く方が良いでしょう。 – MaMadLord

+0

'sendmsg'を使ってヘッダとパケットデータを別々のバッファから集めて、それをコピーしないようにすることができます。 –

答えて

0

ファイルから1024バイトのファイルデータのチャンクを読み込むときは、若干大きなバッファ/アレイ(たとえば、char[1024+4+4]、つまり1032バイト)にロードします。次に、あなたのバッファに余分な8バイトのスペースがあり、バッファをsend()する前にシーケンス番号とチェックサムを書き込むことができます。

1024バイトのデータの後にシーケンス番号とチェックサムを書き込むか、またはデータのfread()をバッファの開始後8バイトのメモリ位置に書き込んでから、シーケンス番号とチェックサムを先頭に書き込むことができますバッファ(すなわち、ちょうどロードされたデータが始まる前のスペースに)。どちらの方法も、(送信者と受信者がレイアウトに同意する限り)うまく動作しますが、私はもう少し考えるのが簡単です。

関連する問題