我在Android上有一个客户端和一个服务器应用程序(使用ZeroC-Ice平台进行通信)。服务器在TCP端口10000上侦听,客户端使用TCP端口5501(我选择的任意端口号)。
当我远程登录到服务器并运行redir add tcp:5501 tcp:10000
时,它工作得很顺利。
然而,由于我当前的系统设置(通过虚拟机使用androidx86二进制文件),我无法再远程登录到服务器。所以我希望我可以用adb forward
代替。然而,无论我尝试了什么端口组合,我都无法使其发挥作用。
如果有人能阐明以下几点,我将不胜感激:-是否可以telnet到设备复制或设备?我在stackoverflow上的另一篇文章中读到,telnet接口只能用于模拟器-redir
和adb forward
之间有什么区别?我应该如何使用adb转发在服务器上实现redir tcp:A:B
?
感谢
我终于设法让它工作起来了。的几点评论
- USB连接的设备无法通过以太网连接。他们可以通过无线网络联系(假设他们与另一方连接到同一网络)
- VirtualBox有自己的NAT转发。如果没有端口转发,在默认的网络配置(即NAT)下,虚拟设备是不可访问的
我的工作设置如下
- USB连接的设备通过无线连接到电脑(查找电脑的本地IP地址,通常类似于192.168.1.x)
- 我已经为NAT启用了VirtualBox转发。我的选项是TCP 10000:10000(其中10000是任意端口号。请注意,它应该高于1024)因此,当我的USB连接设备在端口10000连接到PC时,它会通过VirtualBox的转发转发到虚拟设备
- 虚拟设备侦听TCP端口10000。(我没有指定主机地址以使生活更轻松)
-
如果出现"NetworkOnMainThread"异常,请使用
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);
希望这能帮助