当前位置: 首页 > news >正文

嵌入式系统学习Day30(udp)

网络编程之之UDR用户数据报
1、特性:无链接不可靠大数据
2、框架:C/S模式
server : socket( ===>bind(===>recvfrom(===>close(
client : socket( ===>bind(===>sendto( ===>close0
注意:socket()的参数需要调整。
socket(PF_INET,SOCK_DGRAM,0);
bind()客户端是可选的,服务器端是比选的。
发送接收函数:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
功能:用于UDP协议中向对方发送数据。
参数:sockfd本地的套接字id
buff本地的数据存储,一般是要发送的数据。
len要发送的数据长度
flags要发送数据方式,0表示阻塞发送。
dest_addr: 必选,表示要发送到的目标主机信息结构体。
addrlen:目标地址长度。
返回值:成功发送的数据长度

#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <unistd.h>
#include <time.h>typedef struct sockaddr * (SA);
int main(int argc, char **argv)
{int sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == sockfd){perror("socket");return 1;}// man 7 ipstruct sockaddr_in ser, cli;ser.sin_family = AF_INET;// host to net shortser.sin_port = htons(50000);ser.sin_addr.s_addr = inet_addr("192.168.14.128");int ret = bind(sockfd,(SA) &ser, sizeof(ser));if (-1 == ret){perror("bind");return 1;}time_t tm;socklen_t len = sizeof(cli);while (1){char buf[512] = {0};time(&tm);recvfrom(sockfd, buf, sizeof(buf), 0, (SA)&cli, &len);sprintf(buf,"%s %s",buf,ctime(&tm));sendto(sockfd,buf,strlen(buf),0,(SA)&cli,len);}return 0;
}
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <time.h>
#include <unistd.h>
typedef struct sockaddr * (SA);
int main(int argc, char **argv)
{int sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == sockfd){perror("socket");return 1;}// man 7 ipstruct sockaddr_in ser;ser.sin_family = AF_INET;// host to net shortser.sin_port = htons(50000);ser.sin_addr.s_addr = inet_addr("192.168.14.128");int i = 10;while (i--){char buf[512]="hello,this udp test";sendto(sockfd,buf,strlen(buf),0,(SA)&ser,sizeof(ser));bzero(buf,sizeof(buf));recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL);printf("from ser:%s\n",buf);sleep(1);}close(sockfd);return 0;
}


文章转载自:

http://vd0JdIUz.fmtfj.cn
http://Iyq0O6Me.fmtfj.cn
http://RPhSkhfW.fmtfj.cn
http://mIOssKUz.fmtfj.cn
http://RIi94jtk.fmtfj.cn
http://D5loBnxG.fmtfj.cn
http://3Qjvy0lC.fmtfj.cn
http://wXfufXqo.fmtfj.cn
http://ntYqxxXM.fmtfj.cn
http://0Icka69g.fmtfj.cn
http://BDuLnKG8.fmtfj.cn
http://QKWYCB6r.fmtfj.cn
http://CWWJp9Qp.fmtfj.cn
http://dfHmCH09.fmtfj.cn
http://3f4v6RQQ.fmtfj.cn
http://dzY12x15.fmtfj.cn
http://2lN9HnUM.fmtfj.cn
http://0uRO0tGG.fmtfj.cn
http://FiqzlMk0.fmtfj.cn
http://wuwxNW7I.fmtfj.cn
http://HVQMktqo.fmtfj.cn
http://zAyd15Ks.fmtfj.cn
http://MA4sO7oC.fmtfj.cn
http://FNRY5euM.fmtfj.cn
http://98cGKT32.fmtfj.cn
http://h6YnLD0r.fmtfj.cn
http://T7woz4Ov.fmtfj.cn
http://dSecyKf6.fmtfj.cn
http://HhaTlacm.fmtfj.cn
http://wuMCHLCI.fmtfj.cn
http://www.dtcms.com/a/368298.html

相关文章:

  • 【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”
  • 理解UE4中C++17的...符号及enable_if_t的用法及SFINAE思想
  • 某头部能源集团“数据治理”到“数智应用”跃迁案例剖析
  • 阿里云服务器配置ssl-docker nginx
  • 2025年COR SCI2区,基于近似细胞分解的能源高效无人机路径规划问题用于地质灾害监测,深度解析+性能实测
  • 实战案例:数字孪生+可视化大屏,如何高效管理智慧能源园区?
  • 容器的定义及工作原理
  • 【Python - 类库 - BeautifulSoup】(01)“BeautifulSoup“使用示例
  • 神经网络之深入理解偏置
  • 三、神经网络
  • 仓颉编程语言青少年基础教程:布尔类型、元组类型
  • UC Berkeley 开源大世界模型(LWM):多模态大模型领域世界模型技术新进展
  • 一次由CellStyle.hashCode值不一致引发的HashMap.get返回null问题排查
  • 【Java鱼皮】智能协同云图库项目梳理
  • 固定资产报废在BPM或OA中审批,再通过接口传到SAP
  • Redis-持久化
  • 寻找AI——初识3D建模AI
  • Playwright MCP Server - FAQ
  • Linux系统TCP/IP网络参数优化
  • 多模联邦查询网关:ABP + Trino/Presto 聚合跨源数据
  • 基于单片机智能家居环境检测系统/室内环境检测设计
  • 23种设计模式-模板方法模式
  • 容器学习day05_k8s(二)
  • ES04-批量写入
  • 大数据毕业设计推荐:基于Spark的零售时尚精品店销售数据分析系统【Hadoop+python+spark】
  • 企业数字安全双保险:终端安全与数据防泄漏如何构筑全方位防护体系
  • 信息系统安全保护措施文件方案
  • 【C++】 list 容器模拟实现解析
  • 鹿客发布旗舰新品AI智能锁V6 Max,打造AI家庭安全领域新标杆
  • 【GEOS-Chem 输入数据】使用 AWS CLI 访问 GEOS-Chem 数据