UDP通信相关

news2024/10/6 15:24:13

Linux网络编程-UDP单播服务客户端代码实现
在这里插入图片描述

1、服务端

只接收一个字符串

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
 
#define BUF_SIZE 88
#define PORT     55555
 
int main(int argc, char *argv[])
{
    //建立套接字
    int sock_fd = socket(AF_INET, SOCK_DGRAM, 0);           //IPV4,数据报套接字类型,不指定协议
 
    //说明本服务器地址
  /*  const struct sockaddr_in srvaddr = {
        .sin_family = AF_INET,                              //协议类型IPV4
        .sin_port = htons(PORT),                            //端口号-网络字节序
        .sin_addr.s_addr = htonl(INADDR_ANY)                //IP地址-任意地址
    };*/
  struct sockaddr_in srvaddr;
    srvaddr.sin_family = AF_INET;                              //协议类型IPV4
    srvaddr.sin_port = htons(PORT);                            //端口号-网络字节序
    srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);               //IP地址-任意地址

 
    //绑定地址
    bind(sock_fd, (const struct sockaddr *)&srvaddr, sizeof(srvaddr));
 
    //接收数据
    char buf[BUF_SIZE] = { 0 };
    struct sockaddr_in cliaddr;
    socklen_t cliaddrlen = sizeof(cliaddr);
    while (1)
    {
        bzero(buf, BUF_SIZE);
        bzero(&cliaddr, cliaddrlen);
        recvfrom(sock_fd, buf, BUF_SIZE, 0, (struct sockaddr *)&cliaddr, &cliaddrlen);
        printf("udp server from [%s - %hu]:%s\n",inet_ntoa(cliaddr.sin_addr),cliaddr.sin_port,buf);
    }
 
    //关闭套接字
    close(sock_fd);
 
    return 0;
}

2、客户端

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
 
#define BUF_SIZE 88
#define PROT     55555
#define ADDR     "192.168.111.213"
 
int main(int argc, char *argv[])
{
    //建立套接字
    int sock_fd = socket(AF_INET, SOCK_DGRAM, 0);           //IPV4,数据报套接字类型,不指定协议
 
    //声明将连接地址
 /*   const struct sockaddr_in  srvaddr = {
        .sin_family = AF_INET,                              //协议类型IPV4
        .sin_port = htons(PROT),                            //端口号-网络字节序
        .sin_addr.s_addr = inet_addr(ADDR)                  //IP地址-字符串转IP
    };*/
  //声明将连接地址
    struct sockaddr_in  srvaddr;
       srvaddr.sin_family = AF_INET;                              //协议类型IPV4
        srvaddr.sin_port = htons(PROT);                            //端口号-网络字节序
        srvaddr.sin_addr.s_addr = inet_addr(ADDR);                  //IP地址-字符串转IP
        
    //发送数据
    char buf[BUF_SIZE] = { 0 };
	int count = 0;
    while (1)
    {
        memset(buf,0, BUF_SIZE);
        sprintf(buf, "%d",count);//每次发一个字符串
		printf("udp client send:[%s - %d]:%s\n",ADDR,PROT,buf);
        sendto(sock_fd, buf, strlen(buf), 0, (const struct sockaddr*)&srvaddr, sizeof(srvaddr));
		count++;
		sleep(1);
    }
 
    //关闭套接字
    close(sock_fd);
 
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部署问题集合(十四)VMware复制完整的虚拟机

前言&#xff1a; 由于原先的服务器内存和磁盘空间都不太够&#xff0c;所以需要将其中的程序部署到新的服务器上但部署过程总因为各种奇奇怪怪的问题报错&#xff0c;所以干脆想着将整个虚拟机都复制到新的服务器上&#xff0c;这样需要改动的东西最少&#xff0c;仅需要处理…

黄金圈法则/思维

黄金圈法则/思维 美国作家西蒙.斯涅克因&#xff08;国际知名广告、营销专家&#xff09;在TED演讲中提出黄金圈法则而一举扬名。 模型介绍 黄金圈法则的核心思想是&#xff1a;在沟通表达的时候&#xff0c;按照一个特定的结构why->how->what进行表达。它本质也是一种思…

乔哈里窗模型

乔哈里窗由心理学家乔瑟夫和哈里在20世纪50年代提出的&#xff0c;也常被称之为"自我意识的发现/反馈模型”&#xff0c;或“信息交流过程管理工具”。 模型介绍 该模型把人的内心信息分成四个区域&#xff0c;即&#xff1a; 第一个区域&#xff0c;我知道&#xff0c;你…

104. 二叉树的最大深度

104. 二叉树的最大深度 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 104. 二叉树的最大深度 https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 完成情况&#xff1a; 解题思路&#xff1a; //想…

【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)

MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型&#xff0c;但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…

国货大佬“卡脖子”后王者风范不减?小米卷出光学拍摄“天花板”?| 手机行业社媒心智品牌榜出炉

Social Power 核心解读 1、智能手机“乍暖还寒”&#xff0c;龙头品牌仍稳占消费者心智 比拼屏幕、赶超系统、迭代形态、拓展概念&#xff1f;眼花缭乱过后&#xff0c;产品精益求精&#xff0c;建立稳固的消费者认知&#xff0c;才是“保鲜”关键。在最新发布的数说故事5月…

Text-to-SQL提示工程【Prompt Engineering】

我们刚刚启动了一个开源项目pg-text-query&#xff0c;目标是为文本到 SQL 制作生产就绪的大型语言模型 (LLM) 提示。 我们的目标是 利用 LLM、我们自己对 PostgreSQL 数据库的深入了解以及严格的测试来开发一流的文本到 SQL 的翻译。 推荐&#xff1a;用 NSDT设计器 快速搭建…

T-GCN:用于交通流预测的时序图卷积网络

1.文章信息 本次介绍的文章是2020年发表在IEEE 智能交通系统汇刊上的《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》。 2.摘要 为了同时捕获空间和时间依赖性&#xff0c;本文提出了一种新的基于神经网络的交通流预测方法——时间图卷积网络(T-GCN…

Java中的Socket通信和HTTP通信有什麽不同

文章目录 Socket通信HTTP通信两者之间的区别总结 Java中的Socket通信和HTTP通信是两种不同的网络通信方式。Socket通信是一种面向连接的通信协议&#xff0c;而HTTP通信则是基于TCP/IP协议的无连接的应用层协议。在本文中&#xff0c;我将会简要介绍两者的区别&#xff0c;并且…

开放原子训练营(第三季)inBuilder低代码开发实验室初体验

一、活动介绍 开放原子训练营开启inBuilder低代码实验室活动。无论您是计算机行业相关从业者、低代码开发爱好者还是普通用户&#xff0c;都可以基于inBuilder低代码开发平台社区版&#xff08;基于UBML开源项目的一个可以广泛使用的发行版&#xff09;&#xff0c;体验向导式、…

基于FPGA的车牌识别

基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源&#xff0c;见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…

chatgpt赋能Python-pyecharts_雷达图

Pyecharts雷达图&#xff1a;最佳数据可视化工具 Pyecharts是一个流行的Python库&#xff0c;用于创建美观、交互式和动态数据可视化。其中一个强大的工具是雷达图&#xff0c;它可以帮助你更好地理解数据趋势和关系。 现在&#xff0c;我们将深入研究Pyecharts雷达图&#xf…

深度学习 - 49.SIM 搜索兴趣网络 GSU 与 Soft Search 简单实现 By Keras

目录 一.引言 二.GSU 结构分析 1.Input Layer 输入层 2.Embedding Layer 嵌入层 3.Pooling Layer 池化层 4.MLP 深层网络 5.Soft Search 软搜索 三.GSU 结构实现 1.Init 初始化 2.Build 构建 3.call 调用 4.GSU Layer 完整代码 四.GSU 模型训练 1.Input Layer …

日语文法PPT截图1-15

B站课程链接 aspect 关注事件的流动 相当于英语中现在进行时 这些是简体&#xff0c;是不能表达对听话人的礼貌的。 格助词一般只能接在名词后面&#xff0c;表达名词在句子中所做的成分。 副助词除了可以接在名词的后…

UDP和TCP详解

1. UDP 1.1 UDP协议段格式 16位UDP长度, 表示整个数据报(UDP首部UDP数据)的最大长度, 即数据报最大大小为2^16byte 64KB如果校验和出错, 就会直接丢弃 1.2 UDP特点 1.2.1 无连接不可靠 无连接 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠 没有确认机制, 没有…

小型双轮差速底盘实现触须避障

1. 功能说明 在R023d机器人车体上安装2个 触须传感器 &#xff0c;实现机器人小车避障功能。 2. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09;‍ 扩展板 Bigfish2.1扩展…

netstat 连接通信的信息和状态

netstat t 只显示tcpu只显示udpnnum 数字形式显示地址和端口号l listen 显示监听端口 pprogram 显示进程aall 所有连接和监听r显示路由表 netstat -lnp 显示服务监听端口tcpudpsocket &#xff0c;socket 文件也用来同一台服务器的进程之间通信的。 netsta…

12.2RAC 实例State 为 UNKNOWN

去年10月份接手一个12.2 RAC环境&#xff0c;使用crsctl status res -t查看&#xff0c;发现有个实例状态是UNKNOWN。一直都没有停机维护时间&#xff0c;在测试环境中也没有模拟不出来&#xff0c;原以为删除实例再添加可以解决了。就一直等待维护机会来处理&#xff0c; ASM…

114个ChatGPT全网最热话题

前言 当你使用ChatGPT时&#xff0c;你可能有很多问题需要回答。ChatGPT是一个非常强大的自然语言处理工具&#xff0c;可以用于许多不同的任务&#xff0c;包括聊天机器人、智能客服、文本生成和语言翻译等。 在这篇博客中&#xff0c;我将介绍一些关于如何问ChatGPT的技巧和…

RS-485收发器MS2552可pin对pin兼容THVD1552

THVD15xx 是一系列抗噪 RS-485/RS-422 收发器&#xff0c;专用于在恶劣的工业环境中运行。这些器件的总线引脚可耐受高级别的 IEC 电气快速瞬变 (EFT) 和 IEC 静电放 电 (ESD) 事件&#xff0c;从而无需使用其他系统级保护组件。每个器件由 5V 单电源供电。该系列中的器件具有扩…