0229-UDP 发送和接收

环境

  • Time 2022-11-25
  • WSL-Ubuntu 22.04
  • Rust 1.65.0

前言

说明

参考:https://doc.rust-lang.org/std/net/struct.UdpSocket.html

目标

之前通过接收整个 IP 和 UDP 报文来实现了通信,这里去除报文头的细节,直接通信。

main.rs

UDP 由标准库直接支持,可以直接使用。
将发送过来的信息进行反转,然后发送回去。

use std::net::UdpSocket;

fn main() -> std::io::Result<()> {
    let socket = UdpSocket::bind("127.0.0.1:4444")?;

    loop {
        let mut buffer = [0; 1500];
        let (size, src) = socket.recv_from(&mut buffer)?;

        let buffer = &mut buffer[..size];
        buffer.reverse();
        socket.send_to(buffer, src)?;
    }
}

发送请求

root@jiangbo12490:~# nc -u 127.0.0.1 4444
jiangbo

obgnaijzhangsan

nasgnahz

TCPDUMP 抓包

root@jiangbo12490:~# tcpdump -A -n -i lo port 4444
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes

21:48:11.282710 IP 127.0.0.1.50799 > 127.0.0.1.4444: UDP, length 8
E..$.*@.@............o.\...#jiangbo

21:48:11.282772 IP 127.0.0.1.4444 > 127.0.0.1.50799: UDP, length 8
E..$..@.@.L..........\.o...#
obgnaij
21:48:15.867097 IP 127.0.0.1.50799 > 127.0.0.1.4444: UDP, length 9
E..%.+@.@............o.\...$zhangsan

21:48:15.867157 IP 127.0.0.1.4444 > 127.0.0.1.50799: UDP, length 9
E..%..@.@.K..........\.o...$
nasgnahz

总结

使用 Rust 的标准库,实现 UDP 的通信。

附录

posted @   jiangbo4444  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-08-14 【JavaScript】Object 实例方法
点击右上角即可分享
微信分享提示