以下是Windows平台下基于Winsock的
UDP 组播接收的示例代码:
到此这篇udp的广播和组播(udp 广播)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#define MULTICAST_IP "224.0.0.1" //组播IP地址#define LOCAL_IP "192.168.1.100" // 本地IP地址#define PORT 8888 //端口号#define MAX_BUF_LEN 1024 // 缓冲区大小int main(){// 初始化WinsockWSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {printf("WSAStartup failed with error code %d", WSAGetLastError());return 1;}// 创建套接字SOCKETsock =socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (sock == INVALID_SOCKET) {printf("socketfailed with error code %d", WSAGetLastError());WSACleanup();return 1;}// 绑定本地IP地址和端口号struct sockaddr_in localAddr;localAddr.sin_family = AF_INET;localAddr.sin_addr.s_addr = inet_addr(LOCAL_IP);localAddr.sin_port = htons(PORT);if (bind(sock, (struct sockaddr*)&localAddr, sizeof(localAddr)) ==SOCKET_ERROR) {printf("bind failed with error code %d", WSAGetLastError());closesocket(sock);WSACleanup();return 1;}// 加入组播组struct ip_mreq mreq;mreq.imr_multiaddr.s_addr = inet_addr(MULTICAST_IP);mreq.imr_interface.s_addr = inet_addr(LOCAL_IP);if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(mreq)) ==SOCKET_ERROR) {printf("setsockopt failed with error code %d", WSAGetLastError());closesocket(sock);WSACleanup();return 1;}// 接收数据char buf[MAX_BUF_LEN];struct sockaddr_in fromAddr;int fromLen = sizeof(fromAddr);int recvLen;while (1) {recvLen = recvfrom(sock, buf, MAX_BUF_LEN, 0, (struct sockaddr*)&fromAddr, &fromLen);if (recvLen > 0) {buf[recvLen] = '0';printf("Received message from %s: %s", inet_ntoa(fromAddr.sin_addr), buf);}}// 退出组播组if (setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (char*)&mreq, sizeof(mreq)) ==SOCKET_ERROR) {printf("setsockopt failed with error code %d", WSAGetLastError());closesocket(sock);WSACleanup();return 1;}// 关闭套接字closesocket(sock);// 清理WinsockWSACleanup();return 0;}
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/21863.html