7

マシンが SMSC のように動作するアプリケーションを作成しています。そこから、deliver_sm だけを送信する必要があります。サーバーはバインド要求を送信します。マシンをサーバーにバインドする必要があります。私のアプリケーションは smpp クライアントのように動作します。logica smpp.jar があります。しかし、deliver_sm だけを送信する方法がわかりません。アイデアとコードを教えてください。アウトバウンド リクエストの送信方法を教えてください。これも非常に役立ちます。koshikさん、ありがとうございます。

4

3 に答える 3

17

あなたの質問は、現在提示されている方法では答えられません。以下に考えられる 2 つの設定と、求めている解決策を説明しました。私の答えはSMPP 3.4 仕様に基づいています。

設定

セットアップ 1: SMPP クライアントを作成しています

  1. SMPP クライアントを作成しています。クライアントは通常、接続を開始します。クライアントは ESME (External Short Message Entity) とも呼ばれます。
  2. クライアントは SMSC に接続します。SMSC はサーバーであり、通常は接続を待ちます。
  3. ESME は、「submit_sm」または「data_sm」PDU を介してメッセージを送信できます。

セットアップ 2: SMSC を作成しています

  1. SMSC は、「deliver_sm」または「data_sm」PDU を介してメッセージを送信できます。

接続を開始しています

通常、ESME はバインド要求を SMSC に送信します。バインド要求は、「bind_transmitter」、「bind_receiver」、または「bind_transceiver」PDU のいずれかを介して送信できます。

SMSC は積極的に ESME に「outbind」PDU を介してバインド要求を送信するように促すことができます。この場合、SMSC は ESME の IP/ポートを認識している必要があります。めったに使用されません。

アウトバインド要求の送信のスニペット

//you will need these classes
import org.smpp.Session;
import org.smpp.pdu.Outbind;

Session session = .... ;//Assuming you created a session instance
Outbind outbind = new Outbind(...);//assuming you created a outbind instance

session.outbind(outbind);//send outbind

メッセージの送信

これについては、セットアップの部分ですでに説明しました。ここで繰り返しますが、

  1. ESME は、「submit_sm」または「data_sm」PDU を介してメッセージを送信できます。data_sm はあまり使用されません。
  2. SMSC は、「deliver_sm」または「data_sm」PDU を介してメッセージを送信できます。data_sm はあまり使用されません。

なぜ「deliver_sm」だけを送信することがそれほど重要なのかわかりません。コーダーとして、送信する PDU の種類を制御できます。

これは、deliver_sm リクエストの送信のスニペットです。

//you will need these classes
import org.smpp.Session;
import org.smpp.pdu.DeliverSM;

DeliverSM pdu = new DeliverSM();
pdu.setSequenceNumber(1);//set unique numbers
pdu.setSourceAddr(new Address(1, 1, "12120001234"));//TON, NPI, source number
pdu.setDestAddr(new Address(1, 1, "12120004321"));//TON, NPI, destination number
pdu.setShortMessage("Hello world");
session.deliver(pdu);
于 2011-07-30T06:43:02.067 に答える