में सॉकेट पर संरचना भेजें मैं क्लाइंट/सर्वर प्रोग्राम विकसित कर रहा हूं और मेरे क्लाइंट को सर्वर को संदेश भेजना है।सी
नमूना संदेश सी संरचना:
struct Registration
{
char multicastGroup[24];
pid_t clientPid;
};
क्लाइंट कोड स्निपेट को डी-क्रमानुसार डेटा
if(recvfrom(sd, recvBuf, recvBufSize, 0, (struct sockaddr*)&clientAddr, &len) < 0)
{
printf("Error receiving message from client\n");
}
else
{
printf("Message received:%s\n", recvBuf);
printf("Size :%d\n", strlen(recvBuf));
memcpy(®n, recvBuf, sizeof(regn));
printf("PID:%d\n", regn.clientPid);
printf("MG:%s\n", regn.multicastGroup);
}
को struct क्रमानुसार करने
struct Registration regn ;
regn.clientPid = getpid();
strcpy(regn.multicastGroup, "226.1.1.1");
printf("PID:%d\n", regn.clientPid);
printf("MG:%s\n", regn.multicastGroup);
printf("Size:%d\n", sizeof(regn)); //Size is 28
data = (unsigned char*)malloc(sizeof(regn));
memcpy(data, ®n, sizeof(regn));
printf("Size:%d\n", sizeof(data)); //Size is 4.
सर्वर कोड
संरचना को unsigned char *
पर कॉपी करने के बाद, सरणी का आकार केवल 4.
डेटा को सरणी में पूरी तरह से कॉपी क्यों नहीं किया जाता है?
सर्वर चार सरणी से संरचना का पुनर्निर्माण करने में सक्षम नहीं है।
कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं।
मैं इस डेटा को सॉकेट पर भेजना चाहता हूं। इसलिए मैं इसे 'हस्ताक्षरित' * ' – cppcoder
@cppcoder पर उपयोग करता हूं जो आपके द्वारा उपयोग किए जाने वाले कार्य का आकार लेता है, यदि आप संग्रहीत डेटा का आकार लेते हैं तो आप 'आकार (संरचना पंजीकरण)' –
@cppcoder का उपयोग करना चाहते हैं, आप' sendto() का उपयोग करते हैं ' सी –