Fifo vs Client / Server

时间:2014-07-30 09:41:40

标签: c linux bash sockets fifo

我是新来的...我想假设我不想解决我的问题,但我需要了解客户端/服务器程序和FIFO读写器程序之间的区别......我更好地解释......

我必须为考试做一个项目。该项目的目的是“定义脚本Bash和C程序,以自动纠正检查任务。”

教授要求我写一些Bash脚本来完成考试任务,检查它们,并为每项任务在一个文件上写下分数。到目前为止,一切都很清楚。

然后教授问4 ​​C程序,我不再理解了。我用英文翻译了项目规范中的内容:

  

fifo_reader   它是一个C客户端,它读取FIFO的内容并将其打印在stdout上   将参数(作为命令行中的参数)作为Fifo的名称

     

fifo_writer

     

这是一个C客户端,它在FIFO中写入stdin的内容   将参数(作为命令行中的参数)作为Fifo的名称

     

network_server_echo

     

它是一个C服务器,它监听网络端口(TCP或UDP)(从命令行作为参数传递的端口号和积压值)和:

     
      
  1. 读取输入流上的字符串

  2.   
  3. 编写已在通信输出流

  4. 上读取的字符串         

    network_client_echo

         

    这是network_server_echo的客户端版本

这里我不明白: fifo writer / reader不像带套接字的客户端/服务器应用程序?那么,教授用两种不同的方式问我们同样的事情呢?但是当教授谈论第五读者/作者时,他将他们定义为客户......也许我还没有理解教授真正在问我们什么......有人能帮助我吗?

感谢名单

2 个答案:

答案 0 :(得分:2)

我认为你完全理解这个问题: - )

在我看来,工作应该以两种不同的方式完成。 named fifo不是fifo不是socket。因此,您将学习如何访问不同的unix通信方式。我认为考虑所有这些方法的差异是有道理的。

玩得开心!

答案 1 :(得分:2)

大!你理解得对。 FIFO文件(通常称为named pipes)在本地(在类似UNIX的系统上)工作,而基于sockets的解决方案用于网络。

但是,在Windows中,named pipes也适用于(微软)网络,因此您可以在一台计算机上打开命名管道FIFO并从第二台计算机访问它。这样做在类UNIX系统中起作用。