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

Rust unix domain socket

先用起来再说

use std::io::prelude::*;
use std::os::unix::net::UnixStream;fn main() {let mut stream: UnixStream;let mut buffer = vec![0u8; 4096];match UnixStream::connect("/tmp/hello.world.serv") {Ok(handle) => {stream = handle;match stream.write_all("cmd=read".as_bytes()) {Ok(_) => {println!("send to unix domain socket successfully");match stream.read(&mut buffer) {Ok(_) => {println!("read uds buffer okay");//This step change utf8 code for recv bufferprintln!("Content:{:?}", String::from_utf8(buffer));}Err(error) => println!("read uds buffer errors {:?}", error),}}Err(error) => println!("{:?}", error),}}Err(error) => {println!("{:?}", error)}};
}

编写rust 不是看编译时报错,而是更重要的是关注,lsp 返回的语法错误,只要又错误,大概率是不会编译成功的

rust使用了C的连接器,但是丰富了C 的库,从项目中的小组件开始迭代

除非,linux 驱动有crates 否则不建议使用 unsafe 去调用

use std::io::prelude::*;
use std::os::unix::net::UnixStream;#[allow(unused_mut)]
#[allow(non_snake_case)]
fn main() {let mut stream: UnixStream;let mut buffer = vec![0u8; 4096];let mut cmd = ["cmd=para_list", "cmd=read"];let mut cmdVec = cmd.to_vec();for it in cmdVec.iter_mut() {if *it == "cmd=para_list" {*it = "cmd=para_all_list";} else if it == &"cmd=read" {*it = "cmd=read_all_cache";}}println!("new static str vec: {:?}", cmdVec);match UnixStream::connect("/tmp/uds.network.serv") {Ok(handle) => {stream = handle;match stream.write_all("cmd=read".as_bytes()) {Ok(_) => {println!("send to unix domain socket successfully");match stream.read(&mut buffer) {Ok(_) => {println!("read uds buffer okay");//This step change utf8 code for recv bufferprintln!("Content:{:?}", String::from_utf8(buffer));}Err(error) => println!("read uds buffer errors {:?}", error),}}Err(error) => println!("{:?}", error),}}Err(error) => {println!("{:?}", error)}};
}

和python 一样的可用性
也有引用和解引用,但是用起来就比较麻烦

也有指针和原始指针

不考虑复杂的过程宏和装饰器的作用大差不差

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

相关文章:

  • 初识分布式键值对存储etcd
  • docker swarm集群部署
  • MySQL进阶_9.事务基础知识
  • IDEA调用接口超时,但Postman可成功调用接口
  • TableUtilCache:针对CSV表格进行的缓存
  • java源码-工程讲解
  • K8S基础笔记
  • 十一、统一网关GateWay(搭建网关、过滤器、跨越解决)
  • C语言--每日五道选择题--Day20
  • Fourier分析导论——第6章——R^d 上的Fourier变换(E.M. Stein R. Shakarchi)
  • 音视频技术在手机上的应用与挑战
  • 三十分钟学会SCALA
  • leetcode做题笔记242. 有效的字母异位词
  • 沸点 | Ultipa 图数据库金融应用场景优秀案例首批入选,金融街论坛年会发布
  • GaussDB SQL基础语法示例-GOTO语句
  • ClickHouse 物化视图
  • 原理Redis-ZipList
  • 小迪安全笔记——Web架构篇语言中间件数据库系统源码获取
  • Linux从 全栈开发 centOS 7 到 运维
  • Harmony Ble 蓝牙App (一)扫描
  • 录制第一个jmeter性能测试脚本2(http协议)——webtour
  • 时间序列与 Statsmodels:预测所需的基本概念(1)
  • 计算机网络(持续更新…)
  • BetterDisplay Pro for Mac(显示器校准软件)
  • Node.js之TCP(net)
  • 何时使用Elasticsearch而不是MySql?
  • nodejs微信小程序 +python+PHP+图书销售管理系统的设计与实现-网上书店-图书商城-计算机毕业设计
  • 云原生周刊:Istio 1.20.0 发布 | 2023.11.20
  • Ajax基础(应用场景|jquery实现Ajax|注意事项)
  • 【SpringCloud】Eureka基于Ribbon负载均衡的调用链路流程分析