Everything worth knowing, nothing that isn't.
How SMPP works, step by step
The ESME opens a TCP (ideally TLS) connection and sends bind_transceiver with a system_id and password. Once bound, it submits each message as a submit_sm PDU; the SMSC acknowledges with a submit_sm_resp carrying a message_id. Delivery receipts arrive asynchronously as deliver_sm PDUs on the same socket, matched back by message_id. An enquire_link heartbeat every 30 seconds keeps the session alive, and unbind closes it cleanly. See /answers/what-is-smpp and /answers/what-is-esme.
Bind types and versions
An ESME binds as Transmitter (send-only), Receiver (receive-only), or Transceiver (both on one connection). Transceiver over SMPP 3.4 is the modern default. SMPP 5.0 added Unicode-clean headers and cell-broadcast support but almost nobody deployed it — the install base is overwhelmingly 3.4. BroadNet accepts SMPP 3.4 binds; the host, port and credentials are provided with your test access. See /answers/smpp-3-4-vs-5-0.
Benefits over a REST API
A persistent bind costs nothing per message once established, so at sustained volume SMPP uses roughly a tenth of the CPU and a quarter of the bandwidth of per-request HTTPS. It is the only way to reach sub-100ms p99 latency to an SMSC — there is no HTTP handshake on the critical path — and it streams DLRs back in real time. See /compare/sms-api-vs-smpp.
Limitations and gotchas
SMPP is a binary protocol you must operate: bind management, reconnect with exponential backoff, sequence-number tracking, and DLR matching by message_id (returned as hex on some SMSCs, decimal on others) are all on you. Error handling is terse — a failed submit returns a numeric command_status you must decode. Use the /tools/smpp-error-codes lookup to turn those codes into an action. A production-grade SMPP client is a multi-thousand-line codebase; buy one rather than build one.
When should you choose SMPP over REST?
Choose SMPP when you sustain several hundred messages per second or need persistent binds (capacity per bind is agreed with your account team), run latency-critical OTP where every millisecond counts, or integrate into an operator/aggregator ecosystem that already speaks SMPP everywhere. Otherwise a REST SMS API (no fixed per-account rate limit at BroadNet) is simpler to run and delivers over the identical routes. See /developers/smpp and /products/sms-api.
What port does SMPP use, and is it still used in 2026?
SMPP has no single reserved port; 2775 is the historical plaintext default and operators commonly expose TLS on a dedicated port (BroadNet provides its TLS port with your account). And yes — SMPP is thoroughly current: it is the protocol pinned at the top of virtually every A2P interconnect contract, and BroadNet runs over 1,000 active binds behind 1,000+ operator connections, carrying 300M+ messages a day at 99.99% uptime since 2003.