首页 > 编程语言 >UDP组播的c++实现

UDP组播的c++实现

时间:2023-05-08 18:34:25浏览次数:40  
标签:UDP 组播 remote addr c++ socked include socket

1 写socket的时候UDP和TCP的代码区别就是 是否有连接过程;有connect连接的代码的就是TCP,没有连接的就是UDP

以下代码是发送信息给组播地址(没有写接收代码。接收的代码就是要写个加入多播组,从多播组接收的逻辑)

参考:https://blog.csdn.net/zhizhengguan/article/details/109312144

// UDP_socket.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <stdio.h>
#include <stdlib.h>

#if defined(_WIN32)
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#pragma comment (lib, "Ws2_32.lib")
#pragma comment(lib,"Iphlpapi.lib")
#else
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#endif // defined(_WIN32)

int main() {
    char group_addr[16] = "224.1.3.250";



    //初始化WinSock.否则socket(AF_INET, SOCK_DGRAM, 0)会一直返回-1

    WSADATA WSAData;

    if (WSAStartup(MAKEWORD(2, 0), &WSAData) != 0)

    {

        return FALSE;

    }

    int socked = ::socket(AF_INET, SOCK_DGRAM, 0);
    if (socked < 0)
    {
        perror("socket failed!");
        return 2;
    }

    struct sockaddr_in remote_addr;
    memset(&remote_addr, 0, sizeof(remote_addr));

    remote_addr.sin_family = AF_INET;
    inet_pton(AF_INET, group_addr, &remote_addr.sin_addr.s_addr);
    remote_addr.sin_port = htons(25666);

    char buf[200] = "1234567890";
    int length = 0;
    int i = 0;
    while (1)
    {
        i++;

        length = sendto(socked, buf, strlen(buf), 0, (struct sockaddr*)&remote_addr, sizeof(remote_addr));
        printf("Send Message%s,%d\n", buf,i);
    }
    closesocket(socked);
    return 0;
}

 

 

标签:UDP,组播,remote,addr,c++,socked,include,socket
From: https://www.cnblogs.com/8335IT/p/17382780.html

相关文章

  • c++打卡练习(22)
    判断一个数是不是完数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ intN,i,j,S; cin>>N; for(i=2;i<=N;i++){ S=0; for(j=1;j<=(i/2);j++){ if(i%j==0){ S+=j; } if(S==i){ cout<<S<<""<<"is......
  • VC++ 编辑框只输入数字
    voidCNewEdit::OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)如下;其它需要可以灵活定制。voidCNewEdit::OnChar(UINTnChar,UINTnRepCnt,UINTnFlags){if(nChar==VK_BACK)//BackSpaceCEdit::OnChar(nChar,nRepCnt,nFlags);////Someinvariableparame......
  • C++和Python && 和||运算符之不同点
    ......
  • UDP内核发包流程
    背景工作中遇到客户反馈,上层应用UDP固定间隔100ms发包,但本地tcpdump抓包存在波动,有的数据包之间间隔107ms甚至更多,以此重新梳理了下udp的发送流程。udp发包流程udp_sendmsgUDPcorking是一项优化技术,允许内核将多次数据累积成单个数据报发送。在用户程序中有两种方法可以启......
  • C/C++数据结构练习题[2023-05-08]
    C/C++数据结构练习题[2023-05-08]基本习题部分1字符串距离目的:字符串是一种基础且广泛使用的数据结构,与字符串相关的题目既可以考察基本程序设计能力和技巧,也可以考查算法设计能力。题目:求字符串之间距离要求:设有字符串X,称在X的头尾及中间插入任意多个空格后构成的新字......
  • C/C++二叉树应用[2023-05-08]
    C/C++二叉树应用[2023-05-08]湖南应用技术学院实验(训)报告课程名称 数据结构与算法 课程代码 221031203 成绩评定 学院 信息工程学院 专业 物联网工程 指导老师 聂作财学生姓名 xxxx 学号 xxxxx 班级 物联xxxx实验地点 实验日期 年月日小组成员 无实验类型 □验......
  • C++ | 类继承
    1.概述C++有3种继承方式:公有继承(public)、保护继承(protected)、私有继承(private)。一个B类继承于A类,或称从类A派生类B。这样的话,类A称为基类(父类),类B称为派生类(子类)。派生类中的成员,包含两部分:一部分是从基类继承过来的,另一类是派生类自己增加的成员。派生类继承基类,派生类拥有基......
  • C++面向对象
    面向对象三大特性封装:将具体的实现过程和数据封装成一个函数,只能通过接口访问,降低耦合性继承:子类继承父类的特征和行为,子类有父类非private方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性,但是当父类中的成员变量、成员函数或者类本身被 final 关键字修饰时,......
  • C++虚函数详解:多态性实现原理及其在面向对象编程中的应用
    在面向对象的编程中,多态性是一个非常重要的概念。多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为。C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键什么是虚函数虚函数是一个在基类中声明的函数,它可以被子类重写并提供不同的实现。在C++中,使用关......
  • C++实现一个线程安全的map
    本文是使用ChatCPT生成的,最终的代码使用起来没问题。代码是通过两轮对话完善的,后面把对话合并后跑不出理想效果就没尝试了。第一轮对话请求c++11实现一个线程安全的map,使用方法与std::map保持一致,实现[]运算符回复以下是一个简单的线程安全的map实现,可以使用[]运算符来访问和......