Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 255
  • Last Modified:

Choose the Appropriate Network Communication Protocol for this Scenario

Suppose I have the following scenario:  I have a server-based application which collects and sorts various data to send to various client Windows-based applications across a large area network.  The client application will initially request information from the server.  However, the server application should be able to send updates to the client applications throughout the day.  Does this scenario call for me to use TCP/IP or is there something else I should consider?  The part that I am most concerned with is having the server application send updates to the client applications after the initial request, since the socket will close after this initial data is sent (at least this is my understanding).  Can someone explain how I may make this work?  
0
jtrades
Asked:
jtrades
3 Solutions
 
pseudocyberCommented:
After the initial conversation, the clients could be listening on a UDP port.  The server could then either unicast or multicast out traffic with UDP to the clients to get the updates.  The server wouldn't care about the connection, it would be up to the app to make sure it gets everything.  Alternatively, you could design it so the clients poll the server to see if there's any data to retrieve.
0
 
rafael_accCommented:
This in fact may vary with the kind of applications you are using. Thus, what do you want to remotely update? Is this an antivirus update? Are we talking here about sql server replication ...?
0
 
PennGwynCommented:
Long-term TCP connections could be susceptible to a couple of problems.  These can be mitigated somewhat if the endpoints are relatively stable:  server-to-server or router-to-router.  Clients, though, are subject to random reboots and other instabilities.

Multicast is intended to address some parts of your problem, but may not be well-supported by all of the infrastructure, and your specification of a "large area" suggests that some of the internal links may be relatively low in bandwidth.  There's a risk that multicast traffic like this could saturate those links and interfere with other traffic.

Best bet might be some sort of triggered update:  When there's new data, the server sends a brief UDP alert packet to each known client.  Clients who receive these notifications can contact the server via TCP to pull down the latest info.  They can do that at intervals anyway, in case a UDP alert wasn't received.  Any client that doesn't connect to the server within some large window gets dropped from the list of known clients.

0
 
dstarfireCommented:
I'd say tcp/ip is your best bet. Most of the other routable protocols can get very bandwidth intensive.

Using tcp/ip, you could configure the client to accept connections on an unused UDP port number, and have the server broadcast to each subnet on that port. This eliminates the problem of overloading low-bandwidth links, as long as the client doesn't need to reply to the server.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now