完成端口中,一个服务器同时给多个客户端发送文件,有什么好的办法吗?

解决方案 »

  1.   

    服务器同时给多个客户端发送文件.如何解决同步等问题.TransmitFile只能是一个客户端接收完了之后,才给另一个客户端发,对吗?如果我想几个客户端同时接收文件呢?有什么好的办法?或哪位大有大侠有完成端口传送文件的例子.谢谢大家了.
      

  2.   

    文件一般都是比较大或大小不定,用IOCP传文件当然也可以,不过设计上需要很多考虑,除了要解析文件请求命令外,你还可以额外创建一个线程池,再设计一个任务池,把客户的文件请求命令挂载到任务池中,让线程抢占式从任务池中FIFO取出任务执行。
      

  3.   

    可以分别定义一个读文件文件用的ReadOverlap和发送文件用的SendOverlap。
    为每一个客户创建一个发送队列(因为磁盘读写速度比网络传输快,所以要限制发送队列的大小)。
    每一次读完成后检查队列大小,如果超过阀值,就不投递读文件消息。
    每一次发送完成后也要检查队列大小,如果超过阀值,投递读文件的消息。
    也就是要保证发送队列不为空。
    同时要注意资源回收和错误情况的处理。