日期:2014-05-16  浏览次数:20584 次

客户端如果不使用多线程可以实现收发同时进行吗?
初学socket通信,请教大家一个问题,先拜谢了
写一个类似聊天室的小程序,借助于旧的代码,serv用的poll函数实现于多个客户端的通信。
通过启动多个client进程来模拟多个用户。
现在要实现的是:
每个用户需要既能自己发言也能接收其他所有的客户端的发言,如果不用多线程,想问poll能实现吗,这个函数是只能用于服务器端?

------解决方案--------------------
探讨

感谢楼上,但我还是不明白。在client端,要是发言就会需要scanf,在这就会停住了啊,怎么让程序在这个时候也能接收到serv发过来的消息呢?

------解决方案--------------------
探讨

引用:

感谢楼上,但我还是不明白。在client端,要是发言就会需要scanf,在这就会停住了啊,怎么让程序在这个时候也能接收到serv发过来的消息呢?


scanf就是从标准输入中读,,,标准输入的描述符为0 ,,
你可以把0加入到select的readset中,,然后若0变为可读,就用scanf读取一行(这时候就不会阻塞了),然后发送。