You can allocate the structure and all it's data as one large chunk of memory, and just make the pointers point to the correct offset. Then it's easy to "send" all data at once.
Something like
size_t size = sizeof(T) + sizeof(typea) * MAXLEN + sizeof(typeb) * MAXLEN + sizeof(typec) * (MAXLEN + 1);
char *base = malloc(size);
T *t = (T *) base;
t->mem = (typea *) (base + sizeof(T));
t->mem1 = (typeb *) (base + sizeof(T) + sizeof(typea) * MAXLEN);
t->no = (typec *) (base + sizeof(T) + sizeof(typea) * MAXLEN + sizeof(typeb) * MAXLEN);
When sending over socket, the receiving size knows MAXLEN
and so knows how much it should receive. Then it it does the same with the allocation and the member assignment, and can in theory do a single receive call to receive all data.