小编abr*_*tov的帖子

C# HttpClient 是否支持socks4/5 代理?

我可以使用以下代码设置http代理:

public class CustomFlurlHttpClient : DefaultHttpClientFactory {
    public override HttpClient CreateClient(Url url, HttpMessageHandler m) {
        return base.CreateClient(url, CreateProxyHttpClientHandler("http://192.168.0.103:9090"));
    }

    private HttpClientHandler CreateProxyHttpClientHandler(string proxyUrl, string user = "", string passw = "") {
        NetworkCredential proxyCreds = null;
        var proxyUri = new Uri(proxyUrl);
        proxyCreds = new NetworkCredential (user, passw);
        var proxy = new WebProxy (proxyUri, false) {
            UseDefaultCredentials = false,
            Credentials = proxyCreds
        };
        var clientHandler = new HttpClientHandler {
            UseProxy = true,
            Proxy = proxy,
            PreAuthenticate = true,
            UseDefaultCredentials = false …
Run Code Online (Sandbox Code Playgroud)

c# proxy socks dotnet-httpclient flurl

7
推荐指数
2
解决办法
1万
查看次数

golang ssh拨号超时

在 ssh 连接上创建 DialTimeout 的最佳方法是什么?例如,此代码始终返回“Ping 截止日期超出”:

func (t *Tunnel) ping(sshConn *ssh.Client, addr string) (net.Conn, error) {
    var (
        conn net.Conn
        err  error
        done chan int
    )
    go func() {
        time.Sleep(getSeconds(10))
        err = errors.New("Ping deadline exceed")
        log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
        t.writeStatus(bad)
        done <- 1
        close(done)
    }()
    go func() {
        conn, err = sshConn.Dial("tcp", addr)
        if err != nil {
            t.writeStatus(bad)
            log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
        }
        done <- 1
        close(done)
    }()
    <-done
    return conn, …
Run Code Online (Sandbox Code Playgroud)

ssh go

5
推荐指数
1
解决办法
4116
查看次数

如何使用问号运算符来处理 Tokio 期货中的错误?

我有一个客户处理一个Future做一些事情的。是否可以impl Future<Item = (), Error = io::Error>用作返回类型并进行更好的错误处理?

pub fn handle_client(client: Client) -> impl Future<Item = (), Error = io::Error> {
    let magic = client.header.magic;
    let stream_client = TcpStream::connect(&client.addr).and_then(|stream| {
        let addr: Vec<u8> = serialize_addr(stream.local_addr()?, magic)?;
        write_all(stream, addr).then(|result| {
            // some code
            Ok(())
        })
    });
    stream_client
}
Run Code Online (Sandbox Code Playgroud)

我无法io::Error通过所有嵌套的闭包/期货保持该类型。编译器抛出错误

pub fn handle_client(client: Client) -> impl Future<Item = (), Error = io::Error> {
    let magic = client.header.magic;
    let stream_client = TcpStream::connect(&client.addr).and_then(|stream| {
        let addr: Vec<u8> = serialize_addr(stream.local_addr()?, …
Run Code Online (Sandbox Code Playgroud)

error-handling future rust rust-tokio

5
推荐指数
1
解决办法
3797
查看次数

标签 统计

c# ×1

dotnet-httpclient ×1

error-handling ×1

flurl ×1

future ×1

go ×1

proxy ×1

rust ×1

rust-tokio ×1

socks ×1

ssh ×1