C语言 socket 如何发送带指针的结构体?

发送一个带指针的结构体,我知道怎么发送? 先把结构体转换成字符串,然后发出。
但是接收的时候,怎么接收到结构体中?thanks!

    发送:
    struct f;
char *ffff[sizeof(f)];
memcpy(ffff, &f, sizeof(f));

    接收:
    struct f;
    ffff为收到的数据
    memcpy(&f, ffff, sizeof(ffff));

发指针是没有什么用处的,因为对方同样数值的指针指向的内容你无法控制。
发送结构体,你实际想要的结构体内指针指向的内容。所以你必须将内容发到对方,然后重建结构体的指针值。

 struc AA  a;
 char buf[100];//保存接收的结构体变量
 a=*((sturc AA *) buf);


static char* merge_msg(int port, char* ipaddr, char* msg, int ipszie, int msgsize)
{

char p1, *p2;
char
buffer = malloc(sizeof(int)+ipszie+msgsize);
if(buffer == NULL)
{
return NULL;
}
memset(buffer, 0, sizeof(int)+ipszie+msgsize);

p1 = ip_new(ipszie);
if(p1 == NULL)
{
    free(buffer);
    return NULL;
}


p2 = msg_new(msgsize);
if(p2 == NULL)
{
    ip_delete(p1);
    free(buffer);
    return NULL;
}

my_itoa(port, buffer);
my_itoa(ipszie, p1);
my_itoa(msgsize, p2);

strcat(buffer, p1);
strcat(buffer, ipaddr);
strcat(buffer, p2);
strcat(buffer, msg);

return buffer;

}
.......

//发送前 把结构体转换成 字符串

static char* getip_from_server(char* msg, int ipsize)
{
char* ip = ip_new(ipsize);
if(ip == NULL)
{
return NULL;
}

int count = 1;
if(ipsize >= 10)
{
    count = 2;
}
ip = substring(msg, ip, sizeof(int)+count, ipsize);

return ip;

}

static char* getmsg_from_server(char* msg, int msgsize)
{
char* buffer = msg_new(msgsize);
if(buffer == NULL)
{
return NULL;
}

int count =  strlen(msg) - msgsize;

buffer = substring(msg, buffer, count, msgsize);

return buffer;

}
//数据收到后拆分下来。。

........

不知道这样写 有没有问题?