我正在尝试实现一个多线程服务器,它可以同时处理来自客户端的读/写。 服务器方法:
当每条消息以他们要发送消息的用户的名称开头时,客户端连接到服务器,然后是' |'。它看起来像这样:" USER_NAME | DATA"。
收到数据后,服务器通过{socket:username}字典知道发送数据的位置。一切都很好,除了客户无法同时处理读写的事实。我搜索了一个方法来处理它,我找到了select()函数,但由于缺少示例 - 我无法在我的代码中集成该函数。
因此我有两个问题:
提前致谢!!!
答案 0 :(得分:0)
虽然select()可以使用,但如果你想在select上阻塞系统时做其他事情,你必须使用线程。
看看glib的GIO库。在那里,您可以将回调连接到要监视或操作的操作,例如“来自客户端的连接”。
只需打开一个套接字,然后使用其文件描述符挂起gio.add_watch。这是使用giochannels的a mini-tutorial。