- 締切済み
パケットの計算方法について
tthe_mineの回答
- tthe_mine
- ベストアンサー率46% (19/41)
もしかしたら、メディアの最高速度に合わせてアプリケーション側が速度を調整しながら送らねばならないとお考えでしょうか? メディアの最高速度を考えて関数呼び出しのタイミングを調整することも出来ると思いますが、単に最高速度で送出したいのであれば間を開けずに送信APIを呼べば良いです。 送信バッファがいっぱいで直ぐに送出できない場合には、関数呼び出しの復帰が遅れるか、エラーとなって復帰します。 エラーとなった場合には、同じパケットを再度送信する関数を呼び出すことになります。 送信パケットの上限数については理解しかねますので、もう少し詳しい質問をして下さい。
関連するQ&A
- Ethernetレベルでのパケット数の上限について
今、パケット生成プログラムを作成しようと検討しています。 イーサネットレベルでのパケット伝送です。 その際、ユーザーが設定できる項目として、 パケット長とパケット数を考えています。 そこで、 Ethernetレベルでは、パケット長は最大転送サイズ(1500バイト)とわかりましたが、 パケット数の上限などはあるのでしょうか? 参考サイトでも結構ですので、 どうぞよろしくお願い致します。
- 締切済み
- C・C++・C#
- スループット計算方法について
私は、UDPソケットプログラミングをしています。 送信側から、受信側へ1024byteずつUDPを利用してパケットを送信しています。送信側プログラムでは、配列を1025確保し、受信側でも同様に配列を1025確保しています。 スループット計算を以下に示す計算方法で計算しました。 [送信側] (送信パケット数×パケット長(1024))/送信にかかった時間 [受信側] (受信パケット数×パケット長(1024))/受信にかかった時間 送信にかかった時間=受信にかかった時間とします。 そこで、質問させていただきます。 上記計算式で、パケット長=1024ではなく、1000で計算する方が正しいのでしょうか? よろしくお願いします。
- ベストアンサー
- その他(インターネット接続・通信)
- パケット数のカウント方法
いつもお世話になります。 今、WinSockを用いて、パケット送受信ソフトを作っています。 送信は完成しましたが、受信で問題があります。 UDPプロトコルです。 受信側で受信したパケット数を数えたいのですが、 その方法がわかりません。 送信側で送信するパケットは 複数個で受信側にはそのパケット数はわかりません。 以下のようにカウントすると送信パケット数と異なる 数になります。 int count=0; while(1){ if((recvfrom( recvSocket, buf, sizeof(buf), 0, NULL, NULL)) != SOCKET_ERROR){ count++; } } 受信パケットを数える方法はありませんか? どうぞよろしくお願い致します。
- ベストアンサー
- C・C++・C#
- パケット受信 recvfrom( )について
お世話になります。 WinSockを用いてUDPパケット受信プログラムを作成しています。 環境はVC++です。ダイアログベースで、 STARTボタンを押すと受信開始します。 送信側よりパケットを1000個送信した場合、受信側では、 int num; SOCKET sock; char buf[1500]; //ソケットの設定は省略 while(1){ num = recvfrom(sock, buf, sizeof(buf), 0, NULL, NULL); printf("%d",num ); if( num == SOCKET_ERROR){ break; } } recvfrom()で受信していますが、送信側で送信が完了しても while()を抜けないのか、応答なし(フリーズ)してしまいます。 printf()で表示してみると、 ちゃんと送信パケット個数回表示されています。 送信パケット数は変動するため、受信側のプログラムには 個数がわかりませんため、while()でループしています。 while()を抜ける条件はどうしたらいいのでしょうか? ちなみにrecvfrom()の戻り値として SOCKET_ERROR,0を指定してもエラーになります。 長くなりましたが、どうぞよろしくお願い致します。
- 締切済み
- C・C++・C#
- Ruby1.8を使って、パケットの解析を行ないたいと考えています。
Ruby1.8を使って、パケットの解析を行ないたいと考えています。 RubyPcapを利用して、pcapデータを読み込んで、パケットのデータ(ペイロード)を表示するプログラムを作りたいのです。 ↓のサイトによると、送信先IPアドレスなど取得できるのですが、同じ要領でペイロードのデータを取得することはできないのでしょうか? http://www.db.is.kyushu-u.ac.jp/rinkou/libpcap/rubypacketdb.html
- ベストアンサー
- Ruby
- Winsock のUDP転送時の送信先サーバダウンの検出方法
Winsock を使ってUDPを用いた通信プログラムを開発しておりますが、UDPでsendto()を用いて転送する際に、送信先のサーバがダウンしていても、sendto()の戻り値はエラーを返さないので、サーバがダウンしているかを検出する方法を教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- UDPパケットの分割について
こんにちは。 現在、クライアント&サーバの通信プログラムを作成しています。 クライアントがサーバに接続しにいく際、サーバの待ち受けポートにクライアントが UDPでブロードキャストしています。 その際、クライアントの情報もUDPに乗せて、送信しています。 ここで、問題なのですが、ネットワークモニタで通信データを見てみると、 クライアントから送信するUDPデータが1500バイト?を超えると、UDPパケットの分割が行われ、 2つめのデータが、UDPではなく、IPで送信されています。 しかも、2つめのIPのパケットがサーバ側に届くケースと届かないケースがあるように見受けられます。 (環境の違いかもしれません。) 2つめのパケット破棄は破棄が起こる環境では必ず起きます。 破棄が起きない環境では一回も起こりません。 スイッチ、NIC等で、破棄することってあるのでしょうか? ネットワーク上の問題っぽいので、OSの違い(Win2K pro,Win2k advanced server) などには関係ないですよね? どなたが、ご存知の方がおられましたらご教授願います。
- 締切済み
- その他(インターネット接続・通信)
- TCP/IP通信時のパケット分割について、パケットがMTU以下なのになぜ分割されるの?
Linux-PCと組み込みボード間でTCP/IP(Ethernetで)で通信を行ったときの なぜ?な現象について質問です。 Linux上のプログラムでボードに対して1300バイトのデータを送信(write) しているのですがTCPDUMPでモニタしたところ1024/276バイトに分割されて 送信されています。Linux側のMTUが1500になっているのになぜパケットが 分割されてしまうのでしょうか? ちなみにCygwin上でテストしたときには1つのパケットで送信されていま した。
- 締切済み
- Linux系OS
- Linuxでパケットのデータ部分を合成するプログラムを教えてください。
LinuxでC言語を使用しているのですが、パケットのデータ部分を合成するプログラムのを教えてください。 具体的な例として、 端末A,B,Cがあり、AはBを中継して、CにUDPパケットを2個送信します。 中継端末のBは2個のUDPパケットをバッファリングした後、データ部分のみを1個のパケットにまとめてCに送信します。(ヘッダ部分はAが送信したときと同じにしたい) Cは2個分のデータが入ったUDPパケットを1個受信する。 この例の端末Bでのプログラムを書くとするとどのようにすればいいのでしょうか?? よろしくお願いしますm(_ _)m
- ベストアンサー
- C・C++・C#
- パケット到達遅延の測定にて
Javaを使って通信のプログラムを勉強しています。 UDP通信プログラムでパケット到達遅延を測定したいと考えています。パケット到達遅延を測定するには、 送信側がパケットを送信した時間と、受信側がそのパケットを受信した時間を取得して、 求めようと考えています。 パケット到達遅延を測定するには、送信側と受信側が時刻同期させる必要があると聞きました。 その方法を教えていただきたいのですが、どなたかアドバイスをいただけないでしょうか?
- ベストアンサー
- Java
補足
回答ありがとうございます。 説明が下手で申し訳ございません。 100MbpsにEthernetフレーム(最小64バイト)を 送信したときにパケット転送レートが 最大パケット数と思っています。 そのパケット転送レートの求め方がわかりません。 計算式など合わせて教えていただければ助かります。 よろしくお願い致します。