【发布时间】:2011-12-02 15:23:25
【问题描述】:
这次我编写了一个聊天服务器和客户端。思路是这样的。
服务器使用 readfd(FD_SET) 的 select 方法来查找与其连接的哪些客户端有要发送的内容。如果它发现了什么,它会将其发送给其他客户端。
这是服务器上的选择功能和服务器code的一部分。
SelectResults = select(maxDescriptor+1,&BackUpfdread,NULL,NULL,&time);
我也在客户端中使用 select 功能,让它寻找传入和传出的消息。(这些是服务器从其他客户端发送的,而这些是这个客户端想要发送的)。
好吧,客户端在select函数里有一个fdread和fdwrite(FD_SET)。
Here 是客户端用于连接和聊天的代码部分。
问题是,如果我在服务器上连接两个客户端,则消息传输不是并发的,这意味着客户端无法正确聊天。
最后我想在服务器中使用线程。一个线程等待接收,一个线程发送给客户,但我想听听你的意见。
【问题讨论】:
-
您是否使服务器中的侦听和客户端套接字非阻塞?
-
对不起,我无法理解你的问题。
-
它可能与套接字的阻塞或非阻塞状态无关(使用谷歌搜索找出它的含义),但如果我正确理解你的问题,你的服务器在只有一个时工作客户端已连接但在连接两个客户端时不起作用?那么这是服务器而不是客户端的问题。您能否编辑您的问题以包含一些相关的服务器代码(例如您如何调用
select和accept,以及您如何从客户端读取数据并将数据发送到客户端)? -
服务器始终工作。与一个或多个客户。问题是客户没有按时收到消息。好的,我编辑了上面的帖子。感谢您的宝贵时间。