使用客户端服务器文本聊天来提供音频支持

时间:2015-01-10 10:09:15

标签: c linux tcp

我已经在Linux上实现了多个客户端 - 服务器文本聊天(使用TCP套接字)。现在我想用它来支持音频文件。经过堆栈溢出后,我发现这可以通过从客户端向服务器和服务器发送文件到同一个文件到所有客户端来实现。 现在我的问题是

  1. 服务器(和客户端)如何区分是接收普通文本数据还是(服务器)必须将接收数据打包到文件中?

  2. 直到现在我所拥有的是客户端输入文本并且服务器接收它。如何向客户端提供选项以发送文件或文本。我正在考虑使用switch case(如1 for for文件,2用于文本)但这不是一个好的界面?

2 个答案:

答案 0 :(得分:0)

这里有两个问题。

对于1:您需要通过发送额外的字节来决定它们如何区分文本数据和文件数据。一种可能的方案如下:

  • 对于聊天消息:
    1. 发送字节1(表示这是聊天消息)。
    2. 发送消息。
    3. 发送\n
  • 对于文件:
    1. 发送字节2(表示这是一个文件)。
    2. 以8字节整数形式发送文件的长度。
    3. 发送文件内容。

2:这也取决于你。我建议您的客户端工作方式与用户输入的方式相同(用户键入的任何内容都是聊天消息),除非用户键入特殊命令,如“/ file”。如果用户键入命令,则客户端可以询问用户要发送的文件,然后发送。

答案 1 :(得分:-1)

我建议您使用行业标准的方式来表示不同的零件类型。看看MIME encoding。您的正常消息将在(例如)text/plain中。这(广泛地)是HTTP如何确定如何处理从服务器接收的字节流。