【发布时间】:2014-02-15 19:05:44
【问题描述】:
我基本上采用了这个https://code.google.com/p/android-fb2png/(有一些东西可以为Android构建纯C)并在main.c中放置一个tcp客户端,它使用通常的*NIX sys/socket.h东西连接到本地网络地址192.168.1.xxx:3000并发送"hello world"。
我已经构建了程序并使用adb push 将它放在我的手机上。当我使用adb shell 以root 身份运行它时,我得到Connection refused 错误。我在192.168.1.xxx:3000 上的 tcp 服务器正在运行,并且电脑和手机都连接到同一个 WiFi 网络。
我认为这是 Android 阻止我的程序访问网络。问题是这不是一个“应用程序”并且没有 Java 代码或 android 清单。此外,这个程序永远不会分发 - 我只是在尝试。
虽然我知道<uses-permission android:name="android.permission.INTERNET" />,但我认为这不适用于这种情况。
如何为我的“命令行”程序启用网络?
【问题讨论】:
-
连接被拒绝听起来像是服务器问题。防火墙?某种端口阻塞。我不认为那是 Android...
-
你在运行wireshark吗?你应该运行wireshark来实际查看数据包是否进入网络......
-
好主意!让我检查一下。
-
我用另一台服务器替换了服务器,用节点编写,它似乎正在工作。这很奇怪,但这不是 Android 的错。我是个白痴:)
-
我相信“shell”用户拥有大部分有用的权限,包括互联网,因此您无需root即可运行基本的网络命令。如果没有 root 设备,您无法真正授予额外的权限 - 应用程序从 zygote 启动,它具有完整的集合,并在拆分为新应用程序时根据需要删除权限。
标签: android c sockets android-ndk android-manifest