当我希望我的代码(客户端和服务器)在各种场景下工作时,系统的方法是什么?
What is the systematic way when I want my code (client and server ) work on various scenarios?
我在 64 位 MAC 上开发。我希望它能在两种情况下工作:
64 位服务器和 64 位客户端
32 位服务器和 64 位客户端
仅交易 *NIX 现在
server A和client B通信,我会交换一个struct的链表,类型如下:
typedef struct A{
unsigned long filed1;
int filed2;
char filed3;
struct A* next;
} A_t
char
和 int
的大小在 32 位和 64 位机器上是一致的。
我更关心的是指针和 unsigned long。
我的sending/receiving策略是:
发送和接收一个 list_size * sizeof(A_t)
字节的数组,但是由于 sizeof(A_t) 在 32 位和 64 位上会有不同的值,我的数组会有一些错位。我想知道解决此类问题的最通用方法是什么。
您应该以某种独立于机器(字长和字节顺序)的通用方式进行交流。最简单的方法是按列表顺序以 ASCII 格式发送,例如以 CSV 格式发送。接收方可以从中生成列表。
原则上你应该写一个IRS,一个Interface Requirements Specification,一个双方之间的合同。它应该处理记录的顺序、格式和(例如)数字字段的 minimum/maximum 可以是什么。最好把它写下来,它有多小,即使合同是与你自己签订的。在服务端和客户端的相关功能中添加注释。任何以后需要处理它的程序员现在都知道接口的约束。
我在 64 位 MAC 上开发。我希望它能在两种情况下工作:
64 位服务器和 64 位客户端
32 位服务器和 64 位客户端
仅交易 *NIX 现在
server A和client B通信,我会交换一个struct的链表,类型如下:
typedef struct A{
unsigned long filed1;
int filed2;
char filed3;
struct A* next;
} A_t
char
和 int
的大小在 32 位和 64 位机器上是一致的。
我更关心的是指针和 unsigned long。
我的sending/receiving策略是:
发送和接收一个 list_size * sizeof(A_t)
字节的数组,但是由于 sizeof(A_t) 在 32 位和 64 位上会有不同的值,我的数组会有一些错位。我想知道解决此类问题的最通用方法是什么。
您应该以某种独立于机器(字长和字节顺序)的通用方式进行交流。最简单的方法是按列表顺序以 ASCII 格式发送,例如以 CSV 格式发送。接收方可以从中生成列表。
原则上你应该写一个IRS,一个Interface Requirements Specification,一个双方之间的合同。它应该处理记录的顺序、格式和(例如)数字字段的 minimum/maximum 可以是什么。最好把它写下来,它有多小,即使合同是与你自己签订的。在服务端和客户端的相关功能中添加注释。任何以后需要处理它的程序员现在都知道接口的约束。