3

ローカル ネットワーク内で実行されているデバイスがあり、californium サーバーがネットワーク外の別のマシンで実行されています。サーバー IP はパブリック IP です。要件は、サーバーがデバイスから要求を受信したときに、サーバーがデバイスに GET 要求で応答する必要があることです。ここで直面している問題は、デバイスがサーバーにリクエストを送信するとき、サーバーはデバイスの内部 IP を認識できず、サーバーはデバイスの外部 IP (ネットワークのパブリック IP) しか認識できないことです。そのため、サーバーはリクエストから IP とポート番号を取得し、別の get リクエストを作成して、IP とポートを設定し、リクエストをデバイスに送信します。要求はネットワークのパブリック IP にのみ到達し、デバイスに到達できませんでした。

もう 1 つのことは、サーバーがピギー バック応答をデバイスに送信している場合、デバイスのパブリック IP でブロックされるのではなく、応答がデバイスに到達することです。次のコードを使用して、ピギーバック応答をデバイスに送信しています。

handleGET(CoapExchange exchange){
    exchange.respond("");   //respnoding with empty payload

}

前もって感謝します ...

4

1 に答える 1

1

これは、メッセージを 30 秒以内にクライアントに送り返す場合に機能します。これは、leshan http://github.com/eclipse/leshanで行うことです。軽量 M2M を実装するために Californium を使用しており、達成しようとしているものと同様に機能しています。

于 2014-11-23T15:41:24.043 に答える