这次我编写了一个聊天服务器和客户端。这个想法是这样的。两个客户端之间的同步传输消息
服务器对readfd(FD_SET)使用select方法来查找连接的客户端上有哪些要发送的内容。如果它发现了一些东西,它会将它发送给其他客户。
以下是服务器上的选择功能和服务器的一部分code。
SelectResults = select(maxDescriptor+1,&BackUpfdread,NULL,NULL,&time);
我用select函数在客户端也让它寻求传入和outcoming消息。(这些是服务器从其他客户端发送这些,这个客户要发送)。
那么,select函数中的客户端有一个fdread和fdwrite(FD_SET)。
Here是客户端用于连接和聊天的代码的一部分。
问题是,如果我连接服务器上的两个客户端邮件传输不是并发的,这意味着客户端无法正确聊天。
最后我想在服务器中使用线程。一个等待接收和一个发送给客户的线程,但我想听到你的意见。
在此先感谢。
你确实使服务器的监听和客户端套接字无阻塞? –
对不起,但我不明白你的问题。 –
它可能与套接字的阻塞或非阻塞状态无关(使用谷歌搜索找出它的含义),但如果我正确理解你的问题,你的服务器工作时,只有一个客户端连接,但不工作当两个客户端连接?那么这是服务器而不是客户端的问题。你可以编辑你的问题,包括小的相关服务器代码片段(比如你如何调用'select'和'accept',以及如何从客户端读取数据并向客户端发送数据)? –