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

嵌入式学习day32 网络

htons();//host to network short  将端口号转换为网络通信中的大端存储 eg:htons(50000);

ntohs();//host to network short  将大端存储转换为主机端口号

inet_addr();将IP地址转换为二进制   eg:inet_addr(192.168.1.170);

inet_ntoa();//inet_network to address  将二进制ip地址转换为16进制地址型

1.recvfrom
    ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                        struct sockaddr *src_addr, socklen_t *addrlen);
    功能:
        从套接字中接收数据
    参数:
        sockfd:套接字文件描述符
        buf:存放数据空间首地址
        flags:属性 默认为0
        src_addr:存放IP地址信息的空间首地址(发送端的ip地址存放地址)
        addrlen:存放接收到IP地址大小空间的首地址
    返回值:
        成功返回实际接收字节数
        失败返回-1 

2.修改虚拟机到桥接模式:
    点击"虚拟机"
    点击"设置"
    点击"网络适配器"
    选择"桥接模式"
    点击"确定"

3.将网卡桥接到无线网卡
    点击"编辑"
    点击"虚拟网络编辑器"
    点击"更改设置"

4.在Ubuntu中重启网络服务
    sudo /etc/init.d/networking restart 

    ifconfig

2.bind
    int bind(int sockfd, const struct sockaddr *addr,
                socklen_t addrlen);
    功能:
        在套接字上绑定一个IP地址和端口号
    参数:
        sockfd:套接字文件描述符
        addr:绑定IP地址空间首地址
        addrlen:绑定IP地址的长度
    返回值:
        成功返回0
        失败返回-1 

3.UDP编程:
    发端:socket -> sendto -> close
    收端: socket -> bind -> recvfrom -> close 

练习:
    编写程序实现两台主机间传输一个文件
    ./recv 

    ./send
    a.txt 

4.UDP需要注意的细节点:
    1.UDP是无连接,发端退出,收端没有任何影响
    2.UDP发送数据上限,最好不要超过1500个字节
    3.UDP是不安全不可靠的,连续且快速的传输数据容易产生数据丢失

5.wireshark
  抓包工具

  操作流程:
    1.sudo wireshark
      打开wireshark抓包工具
    2.选择抓取数据包的网卡
      any
    3.执行通信的代码
    4.停止通信
    5.设定过滤条件
        ip.addr == IP地址
        udp
        tcp
        udp.port == 端口

6.UDP包头长度:8个字节
    源端口号(2个字节)
    目的端口号(2个字节)
    长度(2个字节)
    校验和(2个字节)

http://www.lryc.cn/news/312706.html

相关文章:

  • 算法D33 | 贪心算法3 | 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • html地铁跑酷
  • 利用GPT开发应用001:GPT基础知识及LLM发展
  • Golang Ants 构建协程池
  • 【金三银四】面试题汇总(持续编写中)
  • Hive的数据存储
  • ORACLE 如何使用dblink实现跨库访问
  • Sentinel 面试题及答案整理,最新面试题
  • Qt在windows编译hiredis依赖库
  • 【工作向】protobuf编译生成pb.cc和pb.py文件
  • android 快速实现 垂直SeekBar(VerticalSeekBar)
  • 算法刷题day23:双指针
  • 学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic
  • 报表生成器FastReport .Net用户指南:表达式(下)
  • JavaScript极速入门(1)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:浮层)
  • Meta AI移动设备上部署LLM的新框架MobileLLM
  • 使用Tesseract-OCR对PDF等图片文件进行文字识别
  • 部署YOLOv8模型的实用常见场景
  • SpringBoot缓存
  • STC89C52串口通信详解
  • 基础算法|线性结构|前缀和学习
  • 设计模式之模版方法实践
  • sql中COALESCE函数详解
  • rust-analyzer报错“Failed to spawn one or more proc-macro servers,....“怎么解决?
  • Communications--9--一文读懂双机热备冗余原理
  • 可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案
  • Unity中使用代码动态修改URP管线下的标准材质是否透明
  • 关于制作Python游戏全过程(汇总1)
  • 独立站营销新纪元:AI与大数据塑造个性化体验的未来