当前位置:网站首页 > 编程语言 > 正文

udp的广播和组播(udp 广播)

以下是Windows平台下基于Winsock的

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() { // 初始化Winsock WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { printf("WSAStartup failed with error code %d ", WSAGetLastError()); return 1; }  // 创建套接字  SOCKET sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_ UDP ); if (sock == INVALID_ SOCKET ) { printf(" socket failed 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()); close socket (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()); close socket (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()); close socket (sock); WSACleanup(); return 1; }  // 关闭套接字 close socket (sock);  // 清理Winsock WSACleanup();  return 0; } 
到此这篇udp的广播和组播(udp 广播)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 字体图标库制作(字体图标原理和实现)2025-09-14 19:54:06
  • 换国内驾照需要停留多久才能换(换国内驾照需要停留多久才能换驾驶证)2025-09-14 19:54:06
  • imx6ull 芯片的介绍(imx6ull是什么芯片)2025-09-14 19:54:06
  • ubuntu源码编译安装(ubuntu 编译安装)2025-09-14 19:54:06
  • 统信系统安装虚拟机(安装虚拟机的系统可以安装给电脑用吗)2025-09-14 19:54:06
  • Gjk算法流程(gs算法流程图)2025-09-14 19:54:06
  • 虚拟机装win7流畅配置(虚拟机装win7流畅配置怎么设置)2025-09-14 19:54:06
  • jvm内存模型有哪些(jvm内存模型哪些区域是线程私有的)2025-09-14 19:54:06
  • spss23永久许可证代码(spss22永久许可证代码)2025-09-14 19:54:06
  • ubuntu镜像文件下载(ubuntu镜像怎么下载)2025-09-14 19:54:06
  • 全屏图片