pdf

嵌入式开发板4412实现基于UDP的socket编程

  • 1星
  • 日期: 2018-07-31
  • 大小: 1.43MB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 4412开发板嵌入式开发板

嵌入式开发板4412实现基于UDP的socket编程。

文档内容节选

北京迅为电子有限公司 iTOP4412 开发板 iTOP4412 实现基于 UDP 的 socket 编程 大家好,上一章我们讲了基于 TCP 的 socket 编程,这一章我们讲解一下基于 UDP 的 socket 编程,UDP 是用户数据报协议,它是一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务,所以在一些网 络质量不满意的环境下,UDP 协议数据包丢失会比较严重,会造成数据的丢失UDP 的特点是他不属于连接 型协议,所以资源消耗小处理速度快的优点,所以通常音频,视频和普通数据在传送时使用 UDP 较多,因 为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响 UDP 的通信框图如下图所示: 从上图可以看到基于 UDP 通信的程序也是由服务器和客户端组成与 TCP 的服务器不同,UDP 的服务器不 需要 listen 和 accept 函数,客户端不需要 connect 函数 下面我们通过一个例子来了解一下 UDP 的应用程序,首先我们来看下服务器server端的程序 serverc: include stdioh include stringh 日期:201......

北京迅为电子有限公司 iTOP-4412 开发板 iTOP-4412 实现基于 UDP 的 socket 编程 大家好,上一章我们讲了基于 TCP 的 socket 编程,这一章我们讲解一下基于 UDP 的 socket 编程,UDP 是用户数据报协议,它是一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务,所以在一些网 络质量不满意的环境下,UDP 协议数据包丢失会比较严重,会造成数据的丢失。UDP 的特点是他不属于连接 型协议,所以资源消耗小。处理速度快的优点,所以通常音频,视频和普通数据在传送时使用 UDP 较多,因 为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 UDP 的通信框图如下图所示: 从上图可以看到基于 UDP 通信的程序也是由服务器和客户端组成。与 TCP 的服务器不同,UDP 的服务器不 需要 listen 和 accept 函数,客户端不需要 connect 函数。 下面我们通过一个例子来了解一下 UDP 的应用程序,首先我们来看下服务器(server)端的程序 server.c: #include #include 日期:2015-4-27 www.topeetboard.com 1 北京迅为电子有限公司 iTOP-4412 开发板 #include #include int main(int argc, char **argv) { int n; char recvline[1024] = {0}; int sockfd; struct sockaddr_in servaddr; /* 创建一个 UDP 连接的 socket */ sockfd = socket(PF_INET, SOCK_DGRAM, 0); /* 变量 servaddr 清零 */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(50001); /* 绑定 servaddr 到创建的 socket 上 */ 日期:2015-4-27 www.topeetboard.com 2 北京迅为电子有限公司 iTOP-4412 开发板 bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); /* 接收客户端发送的数据 */ recvfrom(sockfd, recvline, 1024, 0, NULL, NULL); printf("%s\n", recvline); /* 关闭 socket 连接 */ close(sockfd); } 上面的代码和我们前面一章的 TCP 的服务器程序差不多,首先也是定义一些变量,然后调用 socket 函数创建 一个套接字,这里 socket 函数的第二个参数是 SOCK_DGRAM,即用户数据报,也就是创建的 UDP 连接, 然后调用 bzero 函数清空变量 servaddr 的值,然后设置 servaddr 结构的值,接着调用 bind 绑定函数,然 后调用 recvfrom 函数直接接收数据,而没有调用 listen 和 accept 函数。 下面我们来看看客户端(client)的程序 client.c: #include #include #include #include int main(int argc, char **argv) 日期:2015-4-27 www.topeetboard.com 3 北京迅为电子有限公司 iTOP-4412 开发板 { int sockfd; struct sockaddr_in servaddr; if(argc != 2) { } printf("usgae: ./client [ip]\n"); return -1; /* 创建一个 UDP 的 socket 连接 */ sockfd = socket(PF_INET, SOCK_DGRAM, 0); /* 变量 servaddr 清零 */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(50001); servaddr.sin_addr.s_addr = inet_addr(argv[1]); char sendline[100]; 日期:2015-4-27 www.topeetboard.com 4 北京迅为电子有限公司 iTOP-4412 开发板 sprintf(sendline, "Hello, world!"); /* 发送数据 */ sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)); /* 关闭 socket 连接 */ close(sockfd); return 1; } 客户端(client)的程序首先是定义一些使用的变量,然后也是调用 socket 函数创建一个套接字,socket 函 数的第二个参数是 SOCK_DGRAM,即用户数据报,也就是 UDP 连接,然后调用 bzero 函数把 servaddr 结 构的变量清零,然后设置 servaddr 结构变量的值,然后调用 sendto 发送函数,这里客户端程序没有调用 bind 函数和 connect 函数。现在我们使用命令 gcc -o server server.c 执行结果如下图: 日期:2015-4-27 www.topeetboard.com 5
更多简介内容

推荐帖子

可剥胶的使用事项
PCB的生产工序复杂,有多道高温、切割等程序,比如焊接、镀金、整平等,可以让基板达到预期要求。可是,并不是整块基板都需要处理,那么,在进行相关操作的时候,就会对其他地方造成破坏。比如只需要在某个角落钻孔,如果操作不当,就会破坏到其他地方。钻孔等程序有专门的设备进行,很少造成意外,但其他工序呢,如何不影响到整块基板呢?这时候,就需要可剥胶。 可剥保护胶,俗称可剥蓝胶,是一种单组份丝印保护油墨,
造物工场PCB PCB设计
如何快速的掌握不同类型MCU的原理和功能
任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握: MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供
Aguilera 【微控制器 MCU】
汽车电子的新人先看这里!
汽车电子是近几年嵌入式开发的一个热点。为了让大家能快速了解咱们汽车电子版块,小管对汽车电子板块的内容进行了精选归类整理,列在下面。欢迎大家来汽车电子板块学习,交流讨论!   一、汽车电子入门问题解答精选 汽车电子跟其他电子有啥区别 现在汽车电子用STM32单片机的多吗? 汽车中控12V电源滤波 什么是ISO连接器? 梅赛德斯奔驰乘用车使用的三相燃油泵的电源控
高进 汽车电子
BQ24610芯片使用问题汇总
本帖最后由 qwqwqw2088 于 2020-5-18 09:50 编辑 BQ24610芯片在插入适配器后,芯片IC就很烫? A:BQ24610芯片在插入适配器后,芯片IC就很烫,没有接入电池,PG的灯亮了,其他引脚的信号都没来得及测量就关电源了,因为芯片太烫了,请问是什么原因,外围电路跟推荐的电路基本一致,是layout布局的问题,还是其他问题,请各位帮忙解答一下  
qwqwqw2088 【模拟与混合信号】
IL0389 电子纸(墨水屏)驱动
  项目网站 https://github.com/T-Wilko/MicroPython-IL0389-driver   ''' Copyright (c) 2020 Thomas Wilkinson Permission is hereby granted, free of charge, to any person obtaining a c
dcexpert 【MicroPython开源版块】
大彩串口屏在多功能智能消毒柜中的应用
传染性疾病由于其传播能力强,一旦无法控制源头,将带来大面积的扩散和传染,对治疗和控制的难度大大增加,如2003年的SARS,2009年的H1N1,2014年的埃博拉,以及当前的2019新型冠状病毒(2019-nCoV)等传染病都有过较长的爆发期,世界卫生组织对于全球性的传染性疾病的防控工作都非常重视。控制交叉感染的重要环节之一就是对媒介物品上的病原体进行消杀。媒介物品包括如:餐具、衣物、工具、现金
dcolour2019 单片机

评论

登录/注册

意见反馈

求资源

回顶部

datasheet推荐 换一换

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })