`
mixer_a
  • 浏览: 357116 次
社区版块
存档分类
最新评论

linux网络编程之多播

 
阅读更多

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>

#define BUFLINE 256
int main(int argc, char *argv[]){
	struct sockaddr_in local;
	int fd, n;
	struct ip_mreq mc;
	char msg[BUFLINE + 1];
	if(argc != 3){
		printf("Usage: ip port\n");
		return 1;
	}

	fd = socket(AF_INET, SOCK_DGRAM, 0);
	if(fd == -1){
		perror("socket()");
		return 1;
	}

	memset(&local, 0, sizeof(local));
	local.sin_port = htons(atoi(argv[2]));
	local.sin_addr.s_addr = htonl(INADDR_ANY);

	if(inet_pton(AF_INET, "192.168.30.61", &mc.imr_interface) <= 0){//my ip
		perror("inet_pton");
		return 1;
	}

	if(inet_pton(AF_INET, argv[1], &mc.imr_multiaddr) <= 0){//multi addr
		perror("inet_pton()");
		return 1;
	}

	printf("ip: %s\n", inet_ntoa(mc.imr_multiaddr));
	fflush(stdout);
	if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mc, sizeof(mc)) < 0){
		perror("setsockopt");
		return 1;
	}

	if(bind(fd, (struct sockaddr*)&local, sizeof(local)) == -1){
		perror("bind");
		return 1;
	}
	n = read(fd, msg, BUFLINE);
	if(n < 0){
		fprintf(stderr, "read");
		return 1;
	}else{
		msg[n - 1] = 0;
		printf("%s\n", msg);
	}
	return 0;
}
 运行:./mclient 224.0.4.5 123

224.0.4.5是组播地址。

分享到:
评论

相关推荐

    Linux网络编程—单播多播与广播的实现文档编码

    在Linux网络编程中,单播、多播和广播是三种不同的通信模式,它们在不同的场景下各有优势。本文将详细讲解这三种模式的实现,并通过给出的实验代码进行解析。 首先,广播通信是指数据包被发送到同一网络段内的所有...

    linux C语言 网络编程教程及源码

    8、Linux网络编程08——多播 9、Linux网络编程09——TCP编程之客户端 10、Linux网络编程10——TCP编程之服务器 11、Linux网络编程11——tcp、udp迭代服务器 12、Linux网络编程12——tcp三次握手、四次挥手 13、Linux...

    linux网络编程(linux网络编程入门书籍)

    Linux网络编程是操作系统领域中的一个重要话题,特别是在服务器端软件开发中。这门技术涉及如何在Linux环境下编写程序,实现网络通信,包括TCP/IP协议栈、套接字编程、并发服务处理等多个方面。以下是对这个主题的...

    Linux网络编程.pdf

    《Linux网络编程》一书是Linux环境下学习网络编程的重要参考资料,尤其适合那些对Linux系统有浓厚兴趣并希望深入理解网络编程的读者。本书涵盖了Linux网络编程的基础知识、核心技术以及高级应用,旨在帮助读者掌握在...

    传智Linux网络编程.docx

    ### 传智Linux网络编程知识点概述 #### 一、网络编程基本概念 1. **协议的概念**:在计算机网络中,协议是指两台或多台计算机之间进行数据交换时所遵循的一套规则。从应用角度来看,协议可以理解为数据传输和解释的...

    Linux网络编程PPT和源码

    Linux网络编程是IT领域中的一个重要话题,特别是在服务器端开发、分布式系统和云计算环境中。这个主题主要涉及如何在Linux操作系统上利用TCP/IP协议栈进行网络应用的开发。标题提及的"Linux网络编程PPT和源码"是针对...

    linux网络编程之广播详细代码及文档说明

    本资源提供了Linux网络编程中的广播代码示例和相应的文档说明,帮助开发者深入理解和实践广播通信。 首先,我们来了解一下Linux网络编程中的广播基础知识。在TCP/IP协议栈中,广播地址是一个特殊的IP地址,它的所有...

    嵌入式linux网络编程

    ### 嵌入式Linux网络编程相关知识点 #### 1. TCP/IP协议概述 ##### 1.1 OSI参考模型及TCP/IP参考模型 OSI(Open Systems Interconnection Model)七层模型是由国际标准化组织(ISO)提出的理论模型,旨在定义不同...

    C++教程网《Linux网络编程》

    根据提供的文件信息,这里将对"C++教程网《Linux网络编程》"的相关知识点进行详细的解析与阐述。 ### Linux网络编程概述 #### 一、课程简介 《Linux网络编程》是一套全面而系统的教学资源,共计41集视频教程。本...

    linux 网络编程笔记

    在Linux网络编程中,`netstat`是一个常用工具,用于显示网络连接、路由表、接口统计、masquerade连接、多播成员等信息。通过选项`-an`可以查看详细的网络状态。此外,`telnet`作为一款远程登录工具,允许用户通过...

    黑马_Linux网络编程-网络基础-socket编程-高并发服务器

    ### 黑马_Linux网络编程-网络基础-socket编程-高并发服务器 #### 知识点概述 本篇文章旨在深入解读“黑马_Linux网络编程-网络基础-socket编程-高并发服务器”相关的核心概念和技术要点,包括网络基础知识、常用...

    Linux网络设备驱动编程.pdf

    Linux网络设备驱动编程是内核编程领域中的一个重要分支,它涉及到内核模块的编写,主要负责与硬件设备进行通信。在Linux操作系统中,网络设备的驱动通常需要遵循一系列标准的编程接口和规范来实现。网络设备驱动程序...

    Linux网络编程-网络基础-socket编程-高并发服务器

    网络基础协议的概念: 在计算机网络中,协议是一系列规则和约定的集合,用于控制网络中不同设备间的通信方式。...通过深入理解这些知识点,可以更好地掌握Linux网络编程,以及如何构建高并发服务器。

    Linux网络编程实验(PPT)

    Linux网络编程是操作系统领域中的一个重要话题,特别是在服务器端软件开发中。这个实验旨在帮助学习者深入理解如何在Linux环境下编写网络应用程序。通过这份PPT,我们可以期待涵盖以下几个关键知识点: 1. **网络...

    Linux系统、网络编程学习源代码

    在IT领域,Linux系统和网络编程是两个至关重要的主题,对于任何希望深入计算机科学和软件开发的人员来说,它们都是必须掌握的基础技能。这个名为"Linux系统、网络编程学习源代码"的压缩包文件,显然是为了帮助初学者...

    Qt网络编程之搭建Udp通信【单播、组播、广播】

    在IT行业中,网络编程是构建分布式系统的关键技术之一,而Qt框架为开发人员提供了一种高效、便捷的方式来处理网络通信。本教程将聚焦于Qt网络编程中的UDP(User Datagram Protocol)通信,涵盖单播、组播和广播三种...

    Linux网络编程1

    在计算机网络领域,Linux网络编程涉及到了网络基础、协议、应用程序设计模式和网络模型等多个方面。本篇文章将详细阐述这些概念,帮助读者深入理解网络编程的基本原理。 1. **网络基础** - **协议**:协议是网络...

    linux音频播放和停止

    ALSA是底层驱动,负责硬件交互,而PulseAudio和Jack则是建立在其上的高级音频服务,提供音量控制、多设备管理和网络音频等功能。 1. ALSA:它是Linux内核的一部分,为声卡提供直接访问接口。对于低级操作,如直接...

Global site tag (gtag.js) - Google Analytics