【发布时间】:2009-12-24 20:05:10
【问题描述】:
我想开发一个非常基本的客户端-服务器程序。
一个软件读取 xml(或任何数据)并将其发送到服务器,服务器再对其进行一点操作并最终将其写入磁盘。
问题是,如果我在磁盘上有很多 xml 文件(在我的客户端),我想打开到服务器的多个连接,而不是一个一个地做。
我的第一个问题是:假设我有一个线程来保存所有文件句柄并在它们上等待多个对象,因此它会知道其中一个何时准备好从磁盘读取。并且对于每个文件,我都有一个适当的套接字,该套接字假设将该特定文件发送到服务器。对于套接字,我可以使用 select 函数来了解哪些套接字已准备好发送。但是有没有办法知道文件和适当的套接字都准备好发送了?
其次,有没有更有效的方法来设计客户端,因为在我当前的设计中,我只使用一个线程,在多处理器计算机上效率不够高。 (尽管我确信为每个套接字连接启动新线程会更好)
第三,对于服务器,我阅读了有关反应器模式的信息。看起来很合适,但就像我的第二个问题一样,在使用一个线程时似乎还不够高效。
也许我可以使用带有完成端口的东西?认为它们非常有效但从未真正使用过它们,所以不知道具体如何。
任何答案和一般性建议都会很棒。
【问题讨论】:
-
能否请您学习一些简单的大写字母艺术 - 每个句子的开头都有一个?这将使您的问题更具可读性。
标签: c++ windows networking client-server