

こんにちは。
この掲示板に、大変お世話になっています。
私は送信側から受信側へWindows上でUDPソケットを利用し、約3MByteのmpegデータを、1024Byteずつパケットに分割し送信しています。以下に、送信側のプログラムの概要を示します。
[送信側]
・配列[1025]確保し、fread関数を用いてファイルの読み込みを行い、sendto関数で受信側へ送信。
・1024Byteずつ送出できているかを表示。
・送出した1024Byteのパケット数を表示。
int n;
int Num_n = 0;
char send_buf[1025];
while((n = fread(send_buf,1,DATA_SIZE,fp)) != 0){
Num_n++;
//1024Byteずつ送出できているかを表示させています
printf("n:%dバイト\t",n);
sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
}
//送出したパケット数を表示させています
printf("%d個のパケットを送出しました\n",Num_n);
<質問内容>
約3MByteのmpegを1024Byteずつ送信した場合、最後のパケットは、「n:4バイト」と表示されました。残りの1020バイト分は、どのような形で送信されているのでしょうか?確保した配列内に何も入っていない形で送信されているのでしょうか?
また、私は送信側と受信側でスループットの計算を以下の式から算出しています。
送信側
(送信したパケット数×1024×8)/送信に要した時間
受信側
(受信したパケット数×1024×8)/受信に要した時間
送信したパケット数は3041個。
送信に要した時間=受信に要した時間です。
この場合、送信側での計算として・・・
(3041×1024×8)/送信に要した時間とするのか
(3040×1024×8)+4/送信に要した時間とするのか
どちらが正当なのでしょうか?
よろしくお願いします。

No.1ベストアンサー
- 回答日時:
>約3MByteのmpegを1024Byteずつ送信した場合、最後のパケットは、「n:4バイト」と表示されました。
残りの1020バイト分は、どのような形で送信されているのでしょうか?確保した配列内に何も入っていない形で送信されているのでしょうか?最後は4バイトの送信です。1020バイト分が送信されることはありません。
sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
のnが送信するサイズ(=4バイト)を示しています。
send_bufの4バイト以降は、ゴミ(前のパケットの残骸)が入っていますが、これは無視されます。
>(3040×1024×8)+4/送信に要した時間とするのか
ですが、×8がビットの意味なら
(3040×1024×8)+4×8 が正しいです。
>send_bufの4バイト以降は、ゴミ(前のパケットの残骸)が入っていますが、これは無視されます。
わかりやすい書き込みありがとうございます。
解決しました。
今後とも、よろしくお願いします。
No.2
- 回答日時:
>//1024Byteずつ送出できているかを表示させています
>printf("n:%dバイト\t",n);
>sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
ここ間違ってますヨ。
これは読み込んだバイト数であって、送信したバイト数ではありません。
printf("n:%dバイト\t",
sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr)));
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
変数のスコープ
-
gccを行ってもexeファイルが生...
-
C++でデスクトップGUIアプリ開...
-
C言語 配列と関数の練習問題
-
終端記号、非終端記号とは
-
C言語 バッファについて。
-
c言語でイベントフラグを使った...
-
int16_t の _t は何?
-
C言語 入力した値から0までの数...
-
プログラミング 2つの整数を読...
-
【C言語】全角文字の配列を、全...
-
C言語の関数のextern宣言
-
C言語 関数、変数の宣言について
-
Cのプログラムからアクセスでき...
-
逆コンパイルと逆アセンブルの...
-
コンソールアプリを作成するの...
-
0 == False はいいけど
-
Linuxでの開発環境構築や設定の...
-
c言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Outlookの「受信日時」「送信者...
-
UDP受信時の通信異常検知について
-
CRC-CCITTに関しての仕様とサン...
-
ASP.NET C#でPOST受信
-
recv関数の戻り値について
-
VB2010で、シリアル通信の方法...
-
HPのメールフォームについて
-
アンテナってあるでしょ?あれC...
-
シリアル通信時のデータ受信方法
-
赤外線通信
-
C#にてCTI。RS232Cの受信と送信...
-
受信処理の終了条件
-
PICを用いた赤外線通信
-
DHCPOFFERの受信について
-
VB2005でTCP/IPソケット通信で...
-
.NetのTimerについて
-
文字化け
-
winsockを使ったTCP及びUDP通信...
おすすめ情報