there.
我正在尝试对服务器进行编程。
服务器从客户端接收一些信息
它将信息发送到另一台服务器并接收响应。
在这种情况下我需要使用 select() 吗?
或者只有 Pthread 就足以做到这一点。
我的服务器有许多客户端同时连接
请亲切地回答我。
如果有,请告诉我我可以参考的源代码或网站
实现处理多个客户端的服务器的一种方法是为每个客户端连接创建一个 pthread,以便您可以在专用线程中读取/写入每个连接。听起来您要问的是"如果我的每个客户端连接都有一个 pthread,我还需要使用 select
吗?
在一个非常简单的服务器中,你也许可以省去select
:连接线程看起来像这样:
do {
read(conn, cmd);
response = process(cmd);
write(conn, response);
} while (cmd != DONE)
但是,即使使用专用客户端线程,您可能会发现在客户端连接上调用read
之前,仍希望使用 select
来检查可用的输入。例如,如果您需要能够在连接上实现空闲超时,则不会只想执行阻塞read
。
我不确定你使用 pthread 在客户端和服务器之间进行通信是什么意思 - 我对 pthread 的经验是与通信无关的 POSIX 线程库......
有关如何使用 select 的文档和示例已广泛提供:
http://support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/select.htmhttp://www.lowtek.com/sockets/select.html
是您可能通过使用谷歌搜索"选择 C"找到的示例......