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