UNIX网络编程——UDP协议,CS架构

news2024/11/23 22:15:01

目录

一.socket创建通信的套接字

二.IPv4地址结构

三.通用地址结构

四. 两种地址结构的使用场合

五.sendto发送数据 

六.bind固定地址信息​编辑

七.recvfrom接受UDP的消息​编辑



一.socket创建通信的套接字

二.IPv4地址结构

三.通用地址结构

四. 两种地址结构的使用场合

 
五.sendto发送数据 

六.bind固定地址信息

 

代码实例:

#include <cstdio>
#include<iostream>
#include<string.h>     //memset
#include<arpa/inet.h>  //htos
#include<sys/socket.h>  //socket
#include<netinet/in.h> //struct sockaddr
#include<unistd.h>  //close

void pra() {

	int sock = socket(AF_INET, SOCK_STREAM, 0);
	if (sock != -1) {

        //绑定本地IP和端口
		struct sockaddr_in my_addr;
		memset(&my_addr , 0, sizeof my_addr);
		my_addr.sin_family = AF_INET;
		my_addr.sin_port = htons(9000);
		my_addr.sin_addr.s_addr = INADDR_ANY;  //绑定本地所有ip
		bind(sock, (struct sockaddr*)&my_addr, sizeof my_addr);
		
		
        //设置目的地址结构
		char* serv_ip = "196.168.233.13";  //声明serve IP地址
		struct sockaddr_in ser_addr;  
		//定义IPv4地址结构,存放服务器的地址信息(目的主机)
		memset(&ser_addr, 0, sizeof ser_addr); 
		//结构体变量addr所有成员初始化为0
		ser_addr.sin_family = AF_INET; //指定地址族
		//32位Ipv4地址omojokppi
		//inet_addr();
		inet_pton(AF_INET, serv_ip, &ser_addr.sin_addr.s_addr);
		ser_addr.sin_port = htons(6000);  //服务器端口


        //发送消息
		sendto(sock, "hello world", strlen("hello world"), 0, (struct sockaddr*)&ser_addr, sizeof ser_addr);
		
		close(sock);  //关闭套接字

	}
	
}


int main() {

	pra();
	return 0;
}

 ​​​

七.recvfrom接受UDP的消息


 代码实例:

#include <cstdio>
#include<iostream>
#include<string.h>     //memset
#include<arpa/inet.h>  //htos
#include<sys/socket.h>  //socket
#include<netinet/in.h> //struct sockaddr
#include<unistd.h>  //close

void pra() {

	int sock = socket(AF_INET, SOCK_STREAM, 0);
	if (sock != -1) {

		struct sockaddr_in my_addr;
		memset(&my_addr , 0, sizeof my_addr);
		my_addr.sin_family = AF_INET;
		my_addr.sin_port = htons(9000);
		my_addr.sin_addr.s_addr = INADDR_ANY;  //绑定本地所有ip
		bind(sock, (struct sockaddr*)&my_addr, sizeof my_addr);
		//绑定本地IP和端口
		
		//接收信息
		while (1) {
			//定义一个IPv4地址结构存放发送者的信息
			struct sockaddr_in from_addr;
			
			socklen_t from_len = sizeof from_addr;
			unsigned char buf[1500] = "";
			int len = recvfrom(sock, buf, sizeof buf, 0, (struct sockaddr*)&from_addr, &from_len);
			
			char ip[16] = "";
			inet_ntop(AF_INET, &from_addr.sin_addr.s_addr, ip, sizeof 16);
			printf("消息来自  %s  %hu ---->", ip, ntohs(from_addr.sin_port));
			printf("lem:%d msg:%s\n", len, buf);
		}
		
		close(sock);  //关闭套接字

	} 
	
}


int main() {

	pra();
	return 0;
}

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

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

相关文章

MySQL— 基础语法大全及操作演示!!

MySQL—— 基础 一、MySQL概述1.1 、数据库相关概念1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.4、DML2.5、DQL2.6、DCL 三、函数四、约束五、多表查询六、事务 一、MySQL概述 1.1 、数据库相关概念 数据库、数据库管理系统、SQL&a…

sql server 删除指定字符串

replace方法 update #test set FIVCODEreplace(FIVCODE,440,) WHERE SOURCEFENTRYID140728

嵌入式软件测试-测试类型

使用质量属性来定义测试类型&#xff0c;即回归到测试类型的本质。 如果测试负载在系统允许的负载范围内&#xff0c;那测试的是系统的功能&#xff0c;此时的测试属于功能性测试&#xff1b;若在此基础上再加大测试时间&#xff0c;那就是稳定性测试了&#xff0c;此时关注的…

有哪些常用的设计素材网站?

素材网站可以是设计师和创意人员的灵感来源。这些网站收集了各种类型的平面设计图片&#xff0c;包括标志、海报、网站设计、包装设计、插图等。在本文中&#xff0c;我将推荐15个平面设计图素材网站&#xff0c;以帮助您找到新的想法和灵感。 1.即时设计资源社区 即时设计资…

8月8日上课内容 研究nginx组件rewrite

location 匹配uri location 匹配的规则和优先级。&#xff08;重点&#xff0c;面试会问&#xff0c;必须理解和掌握&#xff09; nginx常用的变量&#xff0c;这个要求掌握 rewrite&#xff1a;重定向功能。有需要掌握&#xff0c;有需要理解的。 location匹配&#xff1a;…

【RabbitMQ】golang客户端教程5——使用topic交换器

topic交换器&#xff08;主题交换器&#xff09; 发送到topic交换器的消息不能具有随意的routing_key——它必须是单词列表&#xff0c;以点分隔。这些词可以是任何东西&#xff0c;但通常它们指定与消息相关的某些功能。一些有效的routing_key示例&#xff1a;“stock.usd.ny…

角角の Qt学习笔记(一)

目录 一、解决在创建新项目时遇到的几个问题 二、信号和槽&#xff08;非自定义&#xff09; 三、调用 UI 中的元素&#xff08;比如按钮&#xff09; 一、解决在创建新项目时遇到的几个问题 在新建项目时&#xff0c;我选择的构建系统为CMake。然后勾选了Generate form&…

程序员月薪3w、4w难吗?该如何突破?

先说结论&#xff0c;如果你能成为互联网大厂的程序员&#xff0c;那么恭喜你&#xff0c;你的月薪大概率能达到3w、4w&#xff0c;甚至更高&#xff0c;此外一些非互联网大厂的程序员&#xff0c;比如金融、汽车制造等&#xff0c;月薪突破3w、4w的概率也非常高&#xff0c;但…

分享一个计算器

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计算器</title><style>* {box-sizing: border-box;}body…

threejs点击模型实现模型边缘高亮的选中效果--更改后提高帧率

先来个效果图 之前写的那个稍微有点问题&#xff0c;帧率只有30&#xff0c;参照官方代码修改后&#xff0c;帧率可以达到50了&#xff0c;在不全屏的状态下&#xff0c;帧率60 1.首先需要导入库 // 用于模型边缘高亮 import { EffectComposer } from "three/examples/js…

React Native 样式布局基础知识

通过此篇笔记能够学习到如下的几个知识点 在 React Native 中使用样式的一些细节了解 React Native 的 Flex 布局概念了解 React Native 的 flex 布局属性React Native 如何添加多样式属性React Native 中绝对布局和相对布局 React Native 中的 Flex 布局概念 1、主轴和交叉…

06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

在一个完整的应用程序设计中&#xff0c;不可避免地会涉及多个窗体、对话框的设计和调用&#xff0c;如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题&#xff0c;主要包括以下几点。 Qt 提供的…

JavaWeb 速通Cookie

目录 一、关于base标签 1.引入 : 2.介绍 : 3.实例 : 4.细节 : 二、Cookie的引入 1.会话技术 : 1 什么是会话技术&#xff1f; 2 会话技术用于解决什么问题&#xff1f; 2.Cookie介绍 1 Cookie有什么用&#xff1f; 2 Cookie通讯机制 三、Cookie的基本使用 1.创建Cookie…

【数据结构】带你图文结合深入栈和队列,并具体分步实现

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我们继续来学习初阶数据结构的内容&#xff0c;今天我们要讲的是栈与队列部分的内容&#xff0c;这篇博客先讲栈&#xff0c;队列我们放到下次再讲 好了&#xff0c;废…

看完秒懂:5G技术会给视频监控行业带来怎样的变革?

5G是第五代移动通信技术&#xff0c;能够提供更高的带宽和更快的传输速度&#xff0c;这将为视频技术的发展带来大量机会。随着5G技术的逐步普及与商用&#xff0c;人们将能够享受到更加流畅的高清视频体验&#xff0c;并且5G技术还拥有更低的延迟和更高的网络容量。这些优势不…

(树) 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】

❓剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 难度&#xff1a;简单 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科 中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

RN 使用react-navigation写可以滚动的横向导航条(expo项目)

装包&#xff1a; yarn add react-navigation/material-top-tabs react-native-tab-view npx expo install react-native-pager-view import React from react import { View, Text, ScrollView, SafeAreaView } from react-native import { Icon } from ../../../../../compo…

ElastAlert通过飞书机器人发送报警通知

前言 公司采用ELK架构搜集业务系统的运行日志&#xff0c;以前开发人员只有在业务出现问题的时候&#xff0c;才会去kibana上进行日志搜索操作&#xff0c;每次都是被用户告知系统出问题了&#xff0c;这简直是被啪啪打脸~ 于是痛定思痛&#xff0c;决定主动出击&#xff0c;…

【刷题笔记8.8】两数之和

LeetCode&#xff08;Hot100&#xff09;&#xff1a;两个数之和 题目描述及示例&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会…