Search results don't sound peer to peer (searching tends to be colocated with the datastore is why I'm guessing that), in which case HTTP probably fits your needs. Write your server in anything whatsoever and use a WebClient, supplying authentication to each request. You can use Digest authentication if you're concerned about security. The downside of XMPP is that you have to worry about staying connected, and that there's a lot of extraneous information on the network. For instance, presence, iq, protocol negotiation. Also ejabberd (not sure about the others - is there a big .Net XMPP server?) tends to try to negotiate SSL.
If you're not worried about the bandwidth you're probably not worried about any of the above, but certainly the simplest programming model is just a WebClient firing stateless requests. You're never disconnected and the error handling is simple.
OTOH your response to the above comment seems to imply that you might have some P2P elements, in which case HTTP will probably not serve, unless you incorporate a little bit of network traversal and proxying to expose the peers as public addresses to each other. XMPP is WAY simpler than that.
We have a networked lecture theatre application transferring 750Mb/s seamlessly over XMPP. You'll probably find it handles the load ok.
I recommend ejabberd on the server (it's cross platform and incredible) and agsXMPP for the client.