c语言 - 更好的方法是什么:1 个管道和 1 个插座,还是 1 个插座?



我有一个服务器程序,它处理音频数据并将其传递给音频驱动程序。

服务器程序复制音频数据,并将副本放在一个名为FIFO的秒线程中。

如果在FIFO的另一边没有客户端读取,这无关紧要,因为它只是阻塞了FIFO线程。

现在我想添加一个"控制"功能,如"增加音量,播放更快等",因此最终连接的客户端可以控制服务器程序。

重要的是:如果客户端最终断开连接(通过close()或abort),服务器已经检测到这一点,应该恢复到正常模式,并忘记来自客户端的所有命令。

我从来没有使用过套接字,直到现在,所以我不确定什么是最好的方法:

  1. 使用FIFO从服务器->客户端,因为它是和添加一个套接字只是为了客户端->服务器通信?

  2. 使用一个套接字来流式传输服务器->客户端并给出客户端->服务器的命令(以字节格式?)

我会使用"AF_UNIX, SOCK_STREAM"作为套接字。#2是更好的变体吗?我如何确定客户端是否在没有close()的情况下断开了连接?

我投票选择nr.2,一个可能的解决方案是:

建立套接字[sock_stream…];

2-fork()[继承socket描述符];

-father[use to read];
-son[use to write];

可以实现当read()从套接字描述符返回0字节时检测客户端断开

相关内容

  • 没有找到相关文章

最新更新