I am writing an application which will be a single process acting as both an originating and terminating application. This will be required to concurrently connect to more than one MMSC.
Assuming the MMSC's don't have separate TCP/IP addresses, i.e. they are co-located on a single 'host' but 'listen' for incoming connections on different sockets, then it would seem there is now means to uniquely identify the an originating MMSC when it sends a M-Send.req to my application. This wouldn't matter but my application has to be 'asynchronous' and so must eventually send a final status back to the originating MMSC, assume for now this will not be sent back over the connection established by the MMSC in order to send the M-Send.req.
It would seem to me that the only practical solutions to this are either:
Each MMSC has a unique TCP/IP address which I can extract from a connection created by the MMSC and use to identify a particular MMSC.
Each MMSC is configured to make connection requests on a separate port on the host executing my server application so any incoming connection can only be to one particular MMSC.
Of course there presumably exists a similar issue for the MMSC but that's not my problem :-)
RE: Identifying an 'originating' MMSC
Assuming you are using TCP/IP as transport, each MMSC opens its own TCP/IP connection to your application when it needs send MMS messages. If using HTTP1.1, this is a persistant connection from the MMSC to your Application until it is terminated by one side or timed-out.
When you have an application that both sends and recieves MMS messages, then, the MMSC creates 1 Application ID for your application, but it still creates 2 ports... one for originating MMS and one for terminating MMS.
It is possible to write your application to do either of the 2 solutions you mentioned. However, if you have multiple MMSCs trying to connect to the same port on your application server, eventually, there will be a conflict and one connection will get disconnected/rejected.
You many want to consult with the policies and configuration of the operator's MMSC which you will be connecting to.