Ubuntu 环境下编译udp单播 Demo代码实例

发送端代码

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


void sen();

int  main()
{

	sen();
	return 0;
	
}
void sen()
{
	    /*创建socket对象*/
    int sockfd=socket(AF_INET,SOCK_DGRAM,0);
    
    /*创建发生目标端口及IP地址*/
    struct sockaddr_in  dst_addr , local_addr;
    dst_addr.sin_family = AF_INET;
    dst_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    dst_addr.sin_port = htons(5555);
    
    /*创建本地端、本地IP绑定socket*/
    local_addr.sin_family = AF_INET;
    local_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    local_addr.sin_port = htons(5555);
     /*判定绑定本地端口及IP是否成功*/
        if(bind(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0) 
    {
        printf("bind local address error, \n");
        
    }
 
        /*connect 与bind 有相似之处*/
   /* if(connect(sockfd, (struct sockaddr*)&dst_addr,sizeof(dst_addr)) < 0) {
        LOG(ERROR) << "connect to server error";
        return;
    }*/
    
    

    for(int i=0;i<5;i++)
    {
        printf("发送成功\n");
  sendto(sockfd,"hello world", sizeof("hello world"),0,(struct sockaddr*)&dst_addr,sizeof(dst_addr));

    }
    close(sockfd);
    
    
}

使用gcc 编译 

gcc xx.c -o xx.exe

./xx.exe

接收端代码

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
void re();

int main()
{	
	re();
	return 0;
}
void re()
{
        int nRet = 0;
        char buf[100];
        unsigned int len = sizeof(struct sockaddr_in);  
        
        /*创建socket用于绑定本地地址及本地端口*/
     	int serverSocket = socket(PF_INET, SOCK_DGRAM, 0);	
	struct sockaddr_in server , client;	
	server.sin_family = AF_INET;
	server.sin_addr.s_addr = inet_addr("127.0.0.1"); 
	server.sin_port = htons(5555);
	//server.sin_addr.s_addr = htonl(INADDR_ANY);/*接受任意端口的IP*/
	/*使用bind函数 绑定本地socket 端口 IP*/
	bind(serverSocket,(struct sockaddr*)&server,sizeof(server));
	
          while(1)	
        {
         memset(buf,0,sizeof(buf));
         recvfrom(serverSocket, buf , sizeof(buf), 0,(struct sockaddr*)&client,&len ); 
         printf("接受的数据是:%s\n",buf);
         
        }
	close(serverSocket);
}

同上使用gcc编译即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东.'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值