嗨,来自C编程专家
我不是C的专家。我想找到php passing c struct data throught socket programming
的答案因此我开始一个新的主题,专门询问C语言
以下是数据:
typedef struct
{
UI2 todo;
char rz[LNG_RZ + 1];
char saId[LNG_SAT_ID + 1];
char user[LNG_USER + 1];
char lang[LANGLEN + 1];
SI4 result;
UI4 socket;
char text[LNG_ALLG + 1];
char filename[MAX_PATHLEN];
} dmsAuf_Head;
此数据需要通过套接字发送:
rval = send(dms_aufHead->socket, (char *) dms_aufHead, sizeof(dmsAuf_Head), 0);
为什么需要通过
输入数据(char *)dms_aufHead
通过套接字发送之前?
你能猜出来吗?你介意在abit外行术语解释。谢谢。答案 0 :(得分:3)
我不知道这是否是拼写错误,但您不需要转换为char*
,但您忘记使用&
运算符获取变量的地址。然后send
为缓冲区取一个void const*
指针,所以一切都应该没问题。这应该这样做:
rval = send(dms_aufHead->socket, &dms_aufHead, sizeof(dmsAuf_Head), 0);
答案 1 :(得分:0)
send函数需要char *
参数。这是唯一的原因。传递给函数的类型必须正确。
答案 2 :(得分:0)
您不必投射指针。 send
采用const void *
参数,只需获取结构地址即可自动转换为void *
。