c - 编写C程序的网络部分

标签 c networking tcp

我已经开始(用 C 语言)编写一个依赖 TCP 的小型客户端/服务器应用程序。我缺乏网络编程的经验。对于这篇文章的开放式性质,我深表歉意。

我想知道如何最好地编码和解码消息。我选择了以下方法:

客户端向服务器发送命令。每个命令都有一个分配给它的编号和一个结构。该结构存储命令的参数以及参数在内存中(以及流中)的布局方式。当客户端想要发送命令时,它会用数据填充相应的结构。为了让服务器识别该命令,客户端发送一个包含命令号的字节。在命令编号字节之后,消息本身被馈送到流(其字段正确转换为网络字节顺序)。

这种方法产生了有效的代码,但它带来了很多冗余(我发现自己一遍又一遍地编写 switch 语句)。有没有更好的办法?标准程序是什么?

最佳答案

Google 的 Protocol Buffers是序列化/反序列化数据的好方法。有 C 的实现。

关于c - 编写C程序的网络部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10836033/

相关文章:

qt - 使用Qt通过TCP接收原始图像数据进行显示

c# - 关闭 TCP 连接的正确方法是什么

c - 在此 uint8 数组中搜索模式的更优雅方式

http - 是否值得为二进制通信实现一个服务器

有人可以解释为什么 GMP mpz_sizeinbase 会返回 1 太大吗?

mysql - 是否可以在 MySQL 服务器上打开 phpMyAdmin 并从网络中的任何计算机上使用它?

java 将剩余部分发送到连接在同一 LAN 中的系统

c# - 检查服务器是否打开/关闭

c - 释放图表时释放太多

c - lex 解析器解析用 pascal 编写的程序