Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 354895
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T11:58:01+00:00 2026-05-12T11:58:01+00:00

I have a series of systems on a LAN running a synchronized display routine.

  • 0

I have a series of systems on a LAN running a synchronized display routine. For example, think of a chorus line. The program they ran is fixed. I have each “client” download the entire routine, and then contact the central “server” at fixed points in the routine for synchronization. The routine itself is mundane with, perhaps, 20 possible instructions.

Each client runs the same routine, but they can be doing completely different things at any one time. One part of the chorus line can be kicking left, another part kicking right, but all in time with each other. Clients can join and drop out at any time, but they’re all assigned a part. If no-one is there to run the part, it just doesn’t get run.

This is all coded in C# .Net.

The client display is a Windows Forms application. The server accepts TCP connections, and then services them round-robin fashion, keeping a master clock of what’s going on. The clients send a signal that says “I’ve reached sync-point 32” (or 19, or 5, or whatever) and waits for the server to acknowledge and then moves on. Or the server can say “No, you need to start at sync-point 15”.

This all works great. There is a minor bit of delay between the first and last clients to hit a sync-point, but it’s hardly noticeable. Ran for months.

Then the Specification changed.

Now the clients need to respond to near real-time instructions from the server — it’s no longer a pre-set dance program. The server is going to be sending instructions out and the dance program is made up on the fly. I get the fun job of re-designing the protocol, the servicing loops, and the programming instructions.

My toolkit includes anything in a standard .Net 3.5 toolbox. Installing new software is a pain in the arse, since so many systems (clients) can be involved.

I’m looking for suggestions on keeping the clients synced (some sort of latching system? UDP? Broadcast?), distribution of the “dance program”, anything that might make this easier than a traditional Client/Server TCP arrangement.

Keep in mind that there are time/speed limitations going on as well. I could put the dance program in a network database, but I’d have to shove instructions in fairly quickly and there’d be a lot of readers using a rather thick protocol (DBI, SqlClient, etc..) to get a small bit of text. That seems overly complex. And I still need something to keep them all displaying in sync.

Suggestions? Opinions? Wild-ass speculation? Code examples?

PS: Answers may not get marked as “correct” (since this isn’t a “correct” answer), but +1 votes for good suggestions for sure.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T11:58:02+00:00Added an answer on May 12, 2026 at 11:58 am

    I did something similar (quite a while back) with synchronizing a bank of 4 displays, each run by a single system, receiving messages from a central server.

    The architecture we finally settled on after a fair amount of testing involved having one “master” machine. In your case, this would be having one of your 20 clients that acts as the master, and have it connect to the server via TCP.

    The server then would send the entire series of commands for the series through to that one machine.

    That machine then used UDP to broadcast real-time instructions to each of the other machines (the 19 other clients on its LAN) to keep their displays up to date. We used UDP for a couple reasons here – there was lower overhead involved, which helped keep the total resource usage down. Also, since you’re updating in real-time, if one or two “frames” was out of sync, it was never noticable, at least not noticeable enough for our purposes (having a human sitting and interacting with the system).

    The key point to this working smoothly, though, is having an intelligent communication means between the main server and the “master” machine – you want to keep the bandwidth as low as possible. In a case like yours, I’d probably come up with a single binary blob that had the current instruction set for the 20 machines, in its smallest form. (Maybe something like 20 bytes, or 40 bytes if you need it, etc). The “master” machine would then worry about translating this out to the other 19 machines and itself.

    There are some nice things about this – the server has a much easier time transmitting to one machine in the cluster instead of every machine in the cluster. This let us, for example, have one single, centralized server “drive” multiple clusters efficiently, without having ridiculous hardware requirements anywhere. It also keeps the client code very, very simple. It just has to listen for a UDP datagram and do whatever it says – in your case, it sounds like it would have one of 20 commands, so the client becomes very, very simple.

    The “master” server is the trickiest. In our implementation, we actually had the same client code on it as the other 19 (as a separate proces) and one “translation” process that took the blob, broke it into 20 pieces, and transmitted them. It was fairly simple to write, and worked very well.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a series of... pseudo-xml files. What I mean by this, is they
I have a line series chart called lineSeries1. I would like that chart to
I have a program that adds a series of blips to a graph: PictureBox
I have a series of svc files within a web application, they all worked
I have a series of urlManager rules that simplify my web application. For example,
I have used and like the Atmel ATMEGA and ATTINY series microcontrollers, and think
I have a series of icons that contain 1 primary color. For example, I
I have a series of PHP page, and I would like to use conditional
I have a series of if statements in a function like this: if time
I have a series of <div class=clear-both></div> after a series of divs. I want

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.