fd_file.close(); } else if(buf[0] == '1') {    QFile fd_file("/dev/fifoclient2");   QString temp(buf);      if(fd_file.open(IO_WriteOnly|IO_Append))    {     QTextStream t(&fd_file);     t<< temp;    }      fd_file.close(); }    ... ... 
  在该程序中,服务器接收底层发来的信息(这里假设也是由 FIFO 管道传来),然后根据收到的信息内容,如第一个字节的内容,将信息发到不同客户端的管道中,实现对信息的正确分发。 
  客户端程序示例如下:(假设服务器端已经为读而打开 /dev/fifo 管道) 
QFile out_file("/dev/fifo");    if(out_file.open(IO_WriteOnly|IO_Append))  {   TextStream t(&out_file);   << text << "\n"; } 
  当任意一个客户端需要向服务器发送消息时,就可以通过 /dev/fifo 这个公共的管道发出。 
  通过这种方式,同样可以实现GUI内部不同进程或应用之间的通信过程,但是,当客户端数量较多时,这种方法就显示出了一定的局限性,整个通信过程布局变得过于繁杂,管道越来越多使得出错的可能性也越来越大。因此,利用 FIFO 实现 Qt 中上述客户端和服务器端的通信过程,更适用于客户端应用较少时。 
  参考资料 
  关于作者 
  续欣:博士、大学讲师,目前从事无线网络拥塞控制方面的研究,以及嵌入式GUI的开发。联系方式 xxin76@hotmail.com  
  (参考链接: http://www-128.ibm.com/developerworks/cn/linux/l-qtcommu/index.html) 
		    
                      
		      
		      
		   |