マシンが SMSC のように動作するアプリケーションを作成しています。そこから、deliver_sm だけを送信する必要があります。サーバーはバインド要求を送信します。マシンをサーバーにバインドする必要があります。私のアプリケーションは smpp クライアントのように動作します。logica smpp.jar があります。しかし、deliver_sm だけを送信する方法がわかりません。アイデアとコードを教えてください。アウトバウンド リクエストの送信方法を教えてください。これも非常に役立ちます。koshikさん、ありがとうございます。
11007 次
3 に答える
17
あなたの質問は、現在提示されている方法では答えられません。以下に考えられる 2 つの設定と、求めている解決策を説明しました。私の答えはSMPP 3.4 仕様に基づいています。
設定
セットアップ 1: SMPP クライアントを作成しています
- SMPP クライアントを作成しています。クライアントは通常、接続を開始します。クライアントは ESME (External Short Message Entity) とも呼ばれます。
- クライアントは SMSC に接続します。SMSC はサーバーであり、通常は接続を待ちます。
- ESME は、「submit_sm」または「data_sm」PDU を介してメッセージを送信できます。
セットアップ 2: SMSC を作成しています
- 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
メッセージの送信
これについては、セットアップの部分ですでに説明しました。ここで繰り返しますが、
- ESME は、「submit_sm」または「data_sm」PDU を介してメッセージを送信できます。data_sm はあまり使用されません。
- 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 に答える