借一个 Actix-web::Client 官方的例子,可以这样发送一个 HTTP 请求:

use actix_web::client::Client;

#[actix_rt::main]
async fn main() {
    let mut client = Client::default();

    // Create request builder and send request
    let response = client.get("http://sunnysab.cn")
      .send().await.unwrap();

    println!("{:?}", response);

}

但是无论如何程序运行都会返回一个错误:

Err(Connect(Timeout))

用 Wireshark 抓包也没有抓到程序发送了相关的包。

后来在官方 Github 项目上找到了相关的 issue:

https://github.com/actix/actix-web/issues/1047

推测可能是 actix-web 依赖的 dns 库,用未连接的网卡进行了DNS请求(UDP绑定网卡时随便选了一个)。把多余网卡禁用就好了。