按顺序将数据从服务器传输到多个客户端

时间:2014-06-15 10:30:45

标签: c# algorithm networking udp

我想要在其中包含网络模块的应用程序,以便能够将数据发送到多个客户端(同一WiFi网络上的不同计算机)。此应用程序每小时为每个客户端生成图像数据,并且必须将此数据发送到位于同一WiFi网络上的10个不同客户端。当数据传输到所有客户端完成后,所有客户端必须同时在屏幕上显示数据。

我之前没有开发过任何网络模块,并且在这方面经验很少。我最初的搜索只是表明我可能应该首先以某种方式将数据传输给所有客户端,然后为客户端广播一个信号,以便他们同时显示数据。我想知道这样的方法应该遵循的方法 - 服务器如何将图像数据发送给所有客户端?
我认为在我的情况下,它比所需的可靠数据传输更具时间关键性,因此我倾向于使用UDP来获得更快的传输速度。我知道我可以以排队的方式将数据发送到客户端,但是有机制知道网络上的哪些客户端正在等待数据吗?是否有client-register-with-server类型的东西可以通过它记录所有必须发送数据的客户端?这是client-register在UDP中可能的事情吗?

通过我的应用程序,我将能够在特定端口上创建UDP服务器套接字 - 但是多个客户端将如何通知顺序(每个客户端都不能一起通知obv 。)到我的服务器关于他们在网络上的可用性,我如何记下他们的主机地址/端口?

2 个答案:

答案 0 :(得分:1)

只是另一种方法:创建等于用户数的线程数并从线程池加载它,对于每个客户端,将分配一个线程并将进行tcp连接以发送映像并在每个客户端上具有tcp侦听器这将侦听从服务器检索的任何数据。

答案 1 :(得分:0)

如果需要可靠地发送数据,我主张使用 TCP 而不是 UDP ,否则 UDP 就足够了。在您的情况下,似乎必须可靠地发送图像数据,因此使用 TCP 。当您处理多个客户端时,最好是响应,因此您应该将数据分成块,然后使用循环或最短的客户端请求队列的第一次调度通过网络发送。在客户端收集数据并在其到来时进行渲染,而不是等待整个数据。要实现动态渲染,请使用PNG或JPEG文件格式。如果需要,请使用多线程。