लिनक्स में सी के साथ यूडीपी प्रसारण कैसे करें?लिनक्स में सी के साथ यूडीपी प्रसारण कैसे करें?
उत्तर
आमतौर पर बर्कले सॉकेट एपीआई का उपयोग करके sendto()
एक ज्ञात broadcast-class आईपी पते पर एक या अधिक डेटाग्राम। को छोड़कर आप का उपयोग करना चाहिए 'sendto'
यहाँ एक उदाहरण, मानता है कि आप पहले से ही एक सॉकेट है
मैंने वास्तविक कोड शोडेन खोदने के लिए सुझाए गए फ़ंक्शन को बदल दिया। – unwind
खोलना सही यह है। यह से clamav
static void
broadcast(const char *mess)
{
struct sockaddr_in s;
if(broadcastSock < 0)
return;
memset(&s, '\0', sizeof(struct sockaddr_in));
s.sin_family = AF_INET;
s.sin_port = (in_port_t)htons(tcpSocket ? tcpSocket : 3310);
s.sin_addr.s_addr = htonl(INADDR_BROADCAST);
cli_dbgmsg("broadcast %s to %d\n", mess, broadcastSock);
if(sendto(broadcastSock, mess, strlen(mess), 0, (struct sockaddr *)&s, sizeof(struct sockaddr_in)) < 0)
perror("sendto");
}
मैं परीक्षण के लिए हाल ही में यूडीपी बहुस्त्र्पीय सर्वर लिखा लिया गया था। मल्टीकास्ट की सदस्यता लेने के लिए आप अपने क्लाइंट को मल्टीकास्ट समूह 225.0.0.37 पोर्ट 12346 और पोर्ट 12345 (2 फ़ीड्स - एक फ़ीड्स "हैलो, वर्ल्ड!" भेजता है, दूसरा "अलविदा, कार्यालय!")।
मैं अपने क्लाइंट का परीक्षण करने के लिए इसका उपयोग कर रहा हूं, क्लाइंट और सर्वर दोनों एक ही बॉक्स पर चलते हैं, इसलिए ऐसी बिट्स हो सकती हैं जो काम नहीं कर सकती हैं लेकिन इसे पहले कोशिश करें।
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#define BYE_OFFICE 12346
#define HELLO_PORT 12345
#define HELLO_GROUP "225.0.0.37"
int main(int argc, char *argv[])
{
struct sockaddr_in addr;
struct sockaddr_in addr2;
int fd;
int fd2;
char *message = "Hello, World!";
char *message2 = "Bye, Office!";
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
perror("socket");
exit(1);
}
if ((fd2 = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
perror("socket");
exit(1);
}
/* set up destination address */
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(HELLO_GROUP);
addr.sin_port=htons(HELLO_PORT);
memset(&addr2,0,sizeof(addr2));
addr2.sin_family = AF_INET;
addr2.sin_addr.s_addr = inet_addr(HELLO_GROUP);
addr2.sin_port=htons(BYE_OFFICE);
while (1)
{
if (sendto(fd, message, strlen(message), 0,(struct sockaddr *) &addr, sizeof(addr)) < 0)
{
perror("sendto");
exit(1);
}
sleep(3);
if (sendto(fd2, message2, strlen(message2), 0,(struct sockaddr *) &addr2, sizeof(addr2)) < 0)
{
perror("sendto2");
exit(1);
}
sleep(3);
}
}
इस सवाल के साथ क्या करना है? प्रश्न प्रसारण के बारे में है और यह मल्टीकास्ट – xaxxon
लिनक्स जैसे कई आईपी स्टैक में, यह कोड काम नहीं करता है। आपकी सॉकेट में प्रसारण अनुमतियां होनी चाहिए। इसे आज़माएं:
bcast_sock = socket(AF_INET, SOCK_DGRAM, 0);
int broadcastEnable=1;
int ret=setsockopt(bcast_sock, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, sizeof(broadcastEnable));
/* Add other code, sockaddr, sendto() etc. */
के बारे में है सही है! यदि आप सॉकेट प्रसारण अनुमतियां नहीं देते हैं, तो आपको त्रुटि संदेशों से इनकार कर दिया जाएगा। – Heartinpiece
यह व्यवहार वास्तव में POSIX द्वारा आवश्यक है, http://pubs.opengroup.org/onlinepubs/009695399/functions/sendto.html 'sendto() विफल हो जाएगा यदि SO_BROADCAST विकल्प सॉकेट के लिए सेट नहीं है ' –
- 1. यूडीपी प्रसारण
- 2. जावा में यूडीपी प्रसारण
- 3. नेटवर्क यूडीपी प्रसारण डिजाइन?
- 4. बूस्ट :: एएसओ यूडीपी प्रसारण
- 5. उपनिवेशों में यूडीपी प्रसारण पैकेट
- 6. सभी इंटरफेस पर यूडीपी-प्रसारण
- 7. जावा पर यूडीपी प्रसारण
- 8. पायथन यूडीपी प्रसारण
- 9. यूडीपी प्रसारण या आईपी मल्टीकास्ट?
- 10. सी # में यूडीपी विंडोज पर काम करता है लेकिन लिनक्स
- 11. आईफोन यूडीपी प्रसारण और प्रतिक्रिया
- 12. यूडीपी प्रसारण प्राप्त करना [वर्चुअलबॉक्स, उबंटू, पायथन]
- 13. यूडीपी प्रसारण भेजना, एकाधिक संदेश प्राप्त करना
- 14. निर्दिष्ट यूडीपी लिनक्स
- 15. यूडीपी
- 16. एंड्रॉइड में यूडीपी के साथ कैसे काम करें?
- 17. लैन कंप्यूटर डिस्कवरी और सर्वर सेटअप के लिए यूडीपी प्रसारण
- 18. सी में यूडीपी सर्वर कैसे बनाएं?
- 19. लिनक्स यूडीपी बफर उपलब्ध स्थान की निगरानी कैसे करें?
- 20. सी में यूडीपी सॉकेट में स्रोत पोर्ट कैसे सेट करें?
- 21. सी # में स्थानीय नेटवर्क में यूडीपी मल्टीकास्ट कैसे करें?
- 22. सी # में लाइव वीडियो प्रसारण कैसे कार्यान्वित करें?
- 23. विभिन्न यूडीपी प्रसारण क्लाइंट और सर्वर विभिन्न मशीनों पर
- 24. सी #: यूडीपी श्रोता थ्रेड
- 25. यूडीपी के लिए सी ++ में सरणी कैसे विभाजित और जुड़ें?
- 26. सी ++ के साथ लिनक्स में आप विंडो कैसे बनाते हैं?
- 27. सी # यूडीपी सॉकेट: रिसीवर पता प्राप्त करें
- 28. लिनक्स में सी/सी ++ में उपयोगकर्ता नाम कैसे प्राप्त करें?
- 29. मैं सी में प्रेषक का यूडीपी पोर्ट कैसे प्राप्त करूं?
- 30. नेटकैट के साथ केवल एक यूडीपी पैकेट कैसे भेजें?
प्रोग्रामेटिक रूप से, या उपयोगिता/उपकरण के माध्यम से? – ayaz