android - 在 Termux 中运行我的 Go 应用程序时出现 DNS 查找问题

标签 android go

我正在尝试编写一个让我生成 Digital Ocean 液滴的 Go 应用程序。它在我的台式机和笔记本电脑上运行良好,但是当我尝试在我的 Android 手机上使用 Termux 运行它时,我遇到了如图所示的问题。我已经在他们的 GitHub 上提交了一个问题,但我不确定这是否与 Termux 相关,或者我是否遗漏了什么。

这是错误的一部分:

dial tcp: lookup api.digitalocean.com on [::1]:53: read udp [::1]:39143->[::1]:53: read: connection refused

不确定为什么要尝试使用 localhost 作为 dns 服务器。这是日志:

Preparing to unpack .../resolv-conf_1.0_aarch64.deb ...
Unpacking resolv-conf (1.0) ...

Selecting previously unselected package dnsutils.
Preparing to unpack .../dnsutils_9.10.4-1_aarch64.deb ...

Unpacking dnsutils (9.10.4-1) ...
Setting up ca-certificates (20160429) ...
Setting up openssl (1.0.2h-1) ...
Setting up resolv-conf (1.0) ...
Setting up dnsutils (9.10.4-1) ...

$ ./fastnet
2016/08/15 02:28:53 Get https://api.digitalocean.com/v2/images?private=true: dial tcp: lookup api.digitalocean.com on [::1]:53: read udp [::1]:39143->[::1]:53: read: connection refused

$ nslookup google.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 216.58.194.174

最佳答案

只需创建 /etc/resolv.conf 并附加 nameserver 8.8.8.8 那么这个问题就解决了。

根据 src/net/dnsclient_unix.go ,如果 /etc/resolv.conf 不存在,则选择 localhost:53 作为名称服务器。

由于Android中的Linux并不是那么“标准”。 /etc/resolv.conf 不可用。然后,该应用会继续在 localhost:53 中查找主机。

关于android - 在 Termux 中运行我的 Go 应用程序时出现 DNS 查找问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959067/

相关文章:

android - 如何处理来自移动设备的视频方向

java - 不幸的是,当我尝试在我的 Android 模拟器中运行它时,<your app> 已停止。怎么解决这个问题?

安卓布局 :define onClick in XML layout which referes to a method in super class

docker - 将框架 Gin 切换到 Echo 后,服务器不再响应

go - Go 程序 (Bettercap 2) 的错误取决于运行 ble scan 时我在 Ubuntu/Raspberry Pi OS 上使用的蓝牙加密狗

go - 如何在 Go 中访问 YCbCr 颜色属性

java - 无法解析导入 com.google.maps.android.R

android - SmsManager 空指针异常。困惑...如此简单,应该工作

go - 将 slice append 到 slice 的 slice

go - 如何在字符串中插入数字