使用客户端服务器文本聊天提供音频支持
using client server text chat to provide audio support
我已经在 Linux(使用 TCP 套接字)上用 c 实现了多客户端-服务器文本聊天。现在我想用它来支持音频文件,因为 well.After 经历了堆栈溢出,我发现这可以通过从客户端向服务器发送文件,然后服务器向所有客户端发送相同的文件来实现。
现在我的问题是
服务器(和客户端)如何区分是接收普通文本数据还是(服务器)必须将接收数据打包成文件?
另外,到目前为止,我所拥有的是客户端输入文本,服务器收到 it.How 我可以向客户端提供发送文件的选项,还是 text.I 正在考虑使用 switch case(例如 1 用于文件,2 用于文本)但这不是一个好的界面?
我建议您使用行业标准的方式来表示不同的零件类型。看看 MIME encoding。您的正常消息将在(例如)text/plain
中。这就是(广泛地)HTTP 确定如何处理它从服务器接收到的字节流的方式。
你有两个问题。
对于 1:您需要决定它们如何通过发送额外的字节来区分文本数据和文件数据。一种可能的方案如下:
- 对于聊天消息:
- 发送字节 1(表示这是一条聊天消息)。
- 发送消息。
- 发送一个
\n
.
- 对于文件:
- 发送字节 2(表示这是一个文件)。
- 发送文件的长度,作为一个 8 字节的整数。
- 发送文件内容。
对于2:这也取决于你。我建议您的客户端的工作方式与它已经存在的方式相同(用户键入的任何内容都是聊天消息),除非用户键入特殊命令,如“/file”。如果用户键入命令,则客户端可以询问用户要发送哪个文件,然后发送。
我已经在 Linux(使用 TCP 套接字)上用 c 实现了多客户端-服务器文本聊天。现在我想用它来支持音频文件,因为 well.After 经历了堆栈溢出,我发现这可以通过从客户端向服务器发送文件,然后服务器向所有客户端发送相同的文件来实现。 现在我的问题是
服务器(和客户端)如何区分是接收普通文本数据还是(服务器)必须将接收数据打包成文件?
另外,到目前为止,我所拥有的是客户端输入文本,服务器收到 it.How 我可以向客户端提供发送文件的选项,还是 text.I 正在考虑使用 switch case(例如 1 用于文件,2 用于文本)但这不是一个好的界面?
我建议您使用行业标准的方式来表示不同的零件类型。看看 MIME encoding。您的正常消息将在(例如)text/plain
中。这就是(广泛地)HTTP 确定如何处理它从服务器接收到的字节流的方式。
你有两个问题。
对于 1:您需要决定它们如何通过发送额外的字节来区分文本数据和文件数据。一种可能的方案如下:
- 对于聊天消息:
- 发送字节 1(表示这是一条聊天消息)。
- 发送消息。
- 发送一个
\n
.
- 对于文件:
- 发送字节 2(表示这是一个文件)。
- 发送文件的长度,作为一个 8 字节的整数。
- 发送文件内容。
对于2:这也取决于你。我建议您的客户端的工作方式与它已经存在的方式相同(用户键入的任何内容都是聊天消息),除非用户键入特殊命令,如“/file”。如果用户键入命令,则客户端可以询问用户要发送哪个文件,然后发送。