


在 Go 中发出 HTTP GET 请求时出错:'dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected”
在Go语言中,当我们尝试发送HTTP GET请求时,有时会遇到名为“dial tcp: lookup api.ipify.org on: 53: read udp: 50975->: 53: read: connection rejected”的错误。这个错误通常出现在网络连接方面,它表示我们的程序无法建立与目标服务器的连接。这个错误的原因可能有很多,如网络故障、DNS解析问题或防火墙限制等。解决这个问题的方法取决于具体情况,我们可以尝试检查网络设置、验证DNS解析是否正确、排除防火墙限制等。通过解决这个错误,我们可以确保我们的Go程序能够正常地发送HTTP请求并获取所需的数据。
问题内容
我正在尝试使用 net/http
包在 Go 中发出 HTTP GET 请求,以使用 api.ipify.org 服务检索我的公共 IP 地址。仅在使用以下命令构建应用程序后,我才遇到错误:
CGO_ENABLED=0 GOOS=linux go build -a -ldflags "-s -w" -o ip get.go
但是,我注意到当我使用以下命令时,代码运行得非常好:
go build get.go
go run get.go
这是我正在使用的代码:
package main import ( "fmt" "io/ioutil" "net/http" ) func get() { resp, err := http.Get("https://api.ipify.org") if err == nil { defer resp.Body.Close() bodyBytes, _ := ioutil.ReadAll(resp.Body) body := string(bodyBytes) fmt.Println(body) } else { fmt.Println(err) } } func main() { get() }
令我困惑的是,为什么代码可以与 go build
和 go run
一起使用,但当我使用更复杂的构建命令时却失败。有人可以帮助我了解可能导致此问题的原因以及如何解决它吗?感谢您的时间和帮助!
解决方法
当 cgo 可用时,将使用基于 cgo 的解析器。它使用各种方式来解析正在读取 /etc/resolv.conf 或 /etc/nsswitch.conf 等的域。这些功能不是由基于 Go 的 DNS 解析器实现的,因此导致无法解析域和 HTTP 请求失败。
以上是在 Go 中发出 HTTP GET 请求时出错:'dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected”的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

性能测试评估应用程序在不同负载下的性能,而单元测试验证单个代码单元的正确性。性能测试侧重于测量响应时间和吞吐量,而单元测试关注函数输出和代码覆盖率。性能测试通过高负载和并发模拟实际环境,而单元测试在低负载和串行条件下运行。性能测试的目标是识别性能瓶颈和优化应用程序,而单元测试的目标是确保代码正确性和健壮性。

Go语言中适用于机器学习的库和工具包括:TensorFlow:流行的机器学习库,提供构建、训练和部署模型的工具。GoLearn:一系列分类、回归和聚类算法.Gonum:科学计算库,提供矩阵操作和线性代数功能。

Go语言凭借着其高并发性、高效性和跨平台性,成为移动物联网(IoT)应用程序开发的理想选择。Go的并发模型通过goroutine(轻量级协程)实现高度并发,适合处理大量同时连接的IoT设备。Go的低资源消耗有助于在计算和存储有限的移动设备上高效运行应用程序。此外,Go的跨平台支持使IoT应用程序能够轻松部署在各种移动设备上。实战案例展示了用Go构建BLE温度传感器应用,通过BLE与传感器通信并处理传入数据,从而读取和显示温度读数。

Golang框架的优势Golang是一种高性能、并发编程语言,特别适用于微服务和分布式系统。 Golang框架通过提供一组现成的组件和工具,使开发这些应用程序变得更加容易。以下是Golang框架的一些关键优势:1.高性能和并发性:Golang本身以其高性能和并发性着称。它使用goroutine,这是一种轻量级的线程机制,允许并发执行代码,从而提高应用程序的吞吐量和响应能力。 2.模块化和可重用性:Golang框架鼓励模块化和可重用代码。通过将应用程序分解为独立的模块,您可以轻松维护和更新代

Go语言以其并发处理、低延迟和强大的标准库,为数据分析创新赋能。通过并发处理,Go语言能同时执行多个分析任务,显着提升性能。其低延迟特性使分析应用程序能够实时处理数据,实现快速响应和洞察。此外,Go语言丰富的标准库提供了数据处理、并发控制和网络连接的库,方便分析师构建健壮、可扩展的分析应用程序。

使用Go语言分析性能瓶颈:使用pprof进行CPU、内存和阻塞分析。通过交互式Web界面或火焰图可视化分析数据。实践案例:分析CPU性能(使用slowFunction()函数示例)。

如何使用Go语言对大型应用进行性能测试?安装beego和bombardier工具。创建一个使用beego框架的Web应用。创建一个使用bombardier生成的负载生成器脚本。运行性能测试并分析结果,包括请求数、成功率和响应时间。如果性能测试失败,则检查系统资源、代码性能和数据库负载。

Go语言在区块链物联网场景中广泛应用,主要优势包括:编写智能合约,管理区块链上商品流动的规则和操作。开发应用程序,管理资产交易并跟踪资产位置和状态。高效、并发和开源的特性,适合处理大量数据并易于扩展和定制。
