我有一个程序需要:
要解决这个问题,需要使用 select,但我不确定它是否足够。
最初我连接到所有客户端。但是 select 只能用于查看读取或写入是否会阻塞,而不能用于查看连接是否会阻塞。 因此,当我连接到 2 个客户端并且它们都在等待服务时,如果第 3 个客户端不起作用怎么办,连接将阻塞,导致前 2 个连接也超时。
这个问题可以解决吗?
我认为连接问题可以通过为连接操作设置超时来解决,这样它就会足够快地失败。当然,如果网络确实正常工作,这会限制您,但是您到某些服务器的路径非常长(慢)。这是糟糕的设计,但你的要求相当苛刻。
有关连接超时的详细信息,请参阅此答案。
看来你需要隔离连接。好吧,如果你不能使用线程,你总是可以求助于老式的进程。 通过分叉服务器进程来生成每个客户端,并在需要它们之间进行通信时使用传统的 IPC 机制。
如果您既不能使用多进程方法,恐怕您会很难做到这一点。