こんにちは。
この掲示板に、大変お世話になっています。
私は送信側から受信側へ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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Yahoo!メール ぷららメールの送受信が出来なくなった 2 2023/07/16 11:48
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- 所得税 電子税?のメールについて教えてください 8 2022/09/04 21:38
- Android(アンドロイド) androidのoutlookでYahoo メール 1 2023/01/12 21:06
- Outlook(アウトルック) w10からw11にバージョンアップ。アウトルックがクラウドと連携…そのためか、連絡先が消失!! 3 2023/05/09 18:34
- その他(メールソフト・メールサービス) サンダーバードでメールが受信されない 10 2022/03/24 17:00
- Yahoo!メール ヤフーメール(yahoo.co.jp)のメアドの変更の仕方 1 2022/07/10 11:43
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- Gmail gmail から docomo メールに送信できません 4 2022/06/25 00:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
遅延確認応答について教えてく...
-
UDP受信時の通信異常検知について
-
赤外線センサーについて
-
(VC++)シリアル通信について
-
パソコンに詳しい方教えて下さ...
-
バッチファイルでディレクトリ...
-
ipadで社内ネットワークに接続
-
java.lang.NumberFormatExcepti...
-
Lhaplusが発したと、みられるエ...
-
Windows上のファイル操作の履歴...
-
エクスプローラで表示したファ...
-
en_US.UTF-8ロケールってどのPO...
-
別のフォルダにファイルを移動...
-
Zipファイルをエクセルに指定変...
-
ffastun.*って何ですか?
-
ICH5R→ICH5R (RAID0) マザー...
-
robocopyの失敗について
-
FFFTPでアップロードしたデータ...
-
指定ファイルをFTPで自動アップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Outlookの「受信日時」「送信者...
-
CRC-CCITTに関しての仕様とサン...
-
シリアル通信時のデータ受信方法
-
Excxel vba でYahoo API で住所...
-
recv関数の戻り値について
-
UDP受信時の通信異常検知について
-
ASP.NET C#でPOST受信
-
RS232cを用いた送信プログラム
-
VC++メッセージの送受信につい...
-
PC98で232c送信winndowで受信で...
-
TCPのプログラミングで質問…と...
-
VBのMSCommコントロールを使っ...
-
「TCPは全二重可能」の意味
-
DHCPOFFERの受信について
-
VB2010で、シリアル通信の方法...
-
msgrcv( )で領域破壊?
-
ネットワークでの受信バイト数
-
シリアル通信
おすすめ情報