使用TCP套接字向多个客户端发送文件



我正在开发一个web应用程序,它等待N(例如,大约5)个用户通过TCP套接字连接到web服务。服务器跟踪连接的套接字的数量,一旦达到N,他就会同时向所有套接字发送一个(单个)文件,比如最大2MB。这里的重点是时间——它们应该同时接收文件,而不是一个接一个。

作为c#和套接字编程的新手,我想知道在这种情况下最好的方法是什么?我想到了以下几点:服务器(异步)接收套接字连接,一旦达到N,循环遍历文件中的所有字节,并在每次迭代中向连接的每个客户端发送单个Kbyte(或更少?)-在我看来,这是最接近同时发送文件的方式。

我对如何实现这个有点困惑。任何帮助都太好了。由于

编辑:通过同时接收,我的意思是,从技术上讲,我不希望服务器将文件发送到第一个客户端,然后发送到第二个客户端,然后发送到第三个客户端等等,而是同时发送给所有客户端,一旦它离开服务器,它就脱离了我的控制!假设没有网络问题,并且客户机都非常接近(物理上),它们应该或多或少同时接收文件。也许解决办法比我想象的要简单…

您已经计划异步接受套接字连接,并且由于回调发生在单独的线程上,因此您可以简单地使用以下异步回调:

  • 接受传入的套接字连接
  • 再次调用BeginAccept()(在侦听套接字)
  • 发送文件
  • 关闭连接(先前接受的套接字)

如果多个客户端同时连接,这将导致多个线程并发地发送文件,而且几乎是在同一时间。

你的文件可能同时被多个线程访问,所以你必须用FileShare.Read打开它。

希望这有帮助,我忽略了"N同时客户端",因为我知道这不是真正的要求。

相关内容

最新更新