V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1311317
V2EX  ›  程序员

用 Swift 开发 http post 请求客户端时,怎么优先使用 ipv4?或者直接禁用 ipv6

  •  
  •   1311317 · 2023-02-06 14:09:12 +08:00 · 807 次点击
    这是一个创建于 667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近遇到一个问题,用 swift 的 URLSession 库请求远程服务时,经常遇到数据传输慢的情况,在纯 ipv4 环境下就没有交互慢的问题,后来排查是因为 ipv6 导致的。

    让用户在纯 ipv4 网络下使用 app 根本不现实,让运维关闭服务器的 ipv6 解析也不现实,只能寄希望于代码端了。

    请问各位大佬,怎么在代码层面限制只使用 ipv4 进行交互?或者优先使用 ipv4 也行。

    有没有第三方库推荐的?

    3 条回复    2023-02-06 15:02:15 +08:00
    xinJang
        1
    xinJang  
       2023-02-06 14:26:15 +08:00
    修改 hosts
    NouveauNom
        2
    NouveauNom  
       2023-02-06 14:59:14 +08:00
    自行测试

    let config = URLSessionConfiguration.default
    config.networkServiceType = .default
    //config.allowsCellularAccess = false
    config.connectionProxyDictionary = [:]
    config.ipv6Enabled = false
    let session = URLSession(configuration: config)

    let url = URL(string: "https://example.com/api")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.httpBody = "request_data".data(using: .utf8)

    let task = session.dataTask(with: request) { (data, response, error) in
    // Handle response
    }
    task.resume()
    NouveauNom
        3
    NouveauNom  
       2023-02-06 15:02:14 +08:00
    忽略上面的回答。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5865 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 02:25 · PVG 10:25 · LAX 18:25 · JFK 21:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.