10 years, 1 month ago.

UDPの速度が遅い

こんにちは。 mbedのUDPクライアントプログラムを参考に”Hello world"を転送するプログラムを作ったのですが、mbedのリセットボタンをおしてから サーバにデータが届くのに3-4秒ほどかかります。ちなみにサーバ側はraspberryPIで 作成しました。 raspberryPIでほぼ同等のプログラムではクライアントからサーバ側には瞬間に届きます。

ついでに御教授お願いしたいのですが、 EthernetInterface とEthernetNetIfの使い分けはどのようになっているのでしょうか?

以下は転送に使ったプログラムです。

  1. include "mbed.h"
  2. include "EthernetInterface.h"

const char* ECHO_SERVER_ADDRESS = "192.168.11.5"; const int ECHO_SERVER_PORT = 8000;

int main() { EthernetInterface eth; eth.init(); Use DHCP eth.connect();

UDPSocket sock; sock.init();

Endpoint echo_server; echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);

char *out_buffer = "Hello World\n"; sock.sendTo(echo_server, out_buffer, 11);

sock.close();

eth.disconnect(); while(1) {} }

1 Answer

10 years, 1 month ago.

もう少し頭使って質問のタイトルを考えた方がいいと思います。 俺の不満コンテストみたいなタイトルだと答える気が失せますので

さて、質問の答えですが、

リセット後にハードウェアの初期化に時間がかかるためです。 これを短くする方法はありません。 raspberryPIでも、電源投入後(リセット後)直後は起動まで時間がかかるのと同じことです。

どうしても短くしたければ電源を入れっぱなしにする必要があります。

EthernetInterface とEthernetNetIfの使い分けはどのようになっているのでしょうか?

特にないと思います。前者がオフィシャル、後者は寄贈みたいです。 ソースを見て好きな方を使えばいいとおもます。 中身は両方ともlwipのラッパーみたいです。

EthernetInterface

http://mbed.org/users/mbed_official/code/EthernetInterface/file/5887ae6c0c2c/EthernetInterface.h

EthernetIf

http://mbed.org/users/donatien/code/EthernetNetIf/docs/bc7df6da7589/LPC1768_2if_2eth_2EthernetNetIf_8h_source.html

オフィシャルの方が新しいボードに対応する時間は短いと思います。