在java中使用TCP在Android手机和PC之间进行通信

时间:2011-01-25 21:46:51

标签: java android ssl

我正在开展一个项目,我希望我的Droid 2能够通过3G发送和接收数据到连接到以太网端口的设备(不一定是PC,但是我用它来测试通讯)。我相信最终的端到端通信将通过SSL隧道完成,但就目前而言,我只需要建立基本通信来表明设备可以进行通信。

我已经编写了一些在同一网络上的两台计算机之间工作的客户端/服务器应用程序,但我不确定这种情况下的通信是否会起作用,因为手机和PC所处的网络不同。 / p>

我一直试图确定是否可以通过使用我离开市场的ping程序ping我的大学和家里的一些PC来完成,但到目前为止我没有成功。但是,我的朋友根据他的手机,并且能够这样做。

我认为这个问题确实有两个部分:1)这可能吗? 2)我是否需要根据我的手机来完成此操作,或者我应该能够在没有生根的情况下执行此操作?

感谢您的回复。

2 个答案:

答案 0 :(得分:1)

我从未使用Android手机,但我认为:

  1. 您无需拥有root权限即可使用套接字;
  2. 你说你想用3G连接家用电脑,我想你家里有某种路由器,你需要配置从路由器到桌面的端口映射。

答案 1 :(得分:0)

  

我已经编写了一些在同一网络上的两台计算机之间工作的客户端/服务器应用程序,但我不确定这种情况下的通信是否会起作用,因为手机和PC所处的网络不同。 / p>

我可以看到的一个潜在问题是,根据您的3G提供商,可能会对可以使用的端口号和协议进行限制。例如,可以允许HTTP到任何端口号,但是可以丢弃对用于HTTP的相同端口号的未知分组数据(即,不可识别的协议)。

  

我一直试图确定是否可以通过使用我离开市场的ping程序ping我的大学和家里的一些PC来完成,但到目前为止我没有成功。但是,我的朋友根据他的手机,并且能够这样做。

同样,另一个潜在的问题 - ping(ICMP)不是访问其他网络设备的一个很好的测试,因为大多数外围路由器/防火墙将默认拒绝ICMP流量(通常是静默) - 甚至我的家庭DSL路由器/防火墙静默阻止ICMP默认情况下。至于需要一个root电话允许使用ping应用程序 - 我的手机没有root,我有一个来自市场的ping应用程序工作正常。

  

我认为这个问题确实有两个部分:1)这可能吗? 2)我是否需要根据我的手机来完成此操作,或者我应该能够在没有生根的情况下执行此操作?

我没有理由知道需要使用手机来使用基于套接字的通信,我只是想知道尝试ping路由器/防火墙是不是最好的测试你正在尝试实现。

我建议从HTTP开始 - 我不知道你用什么来为PC编程,但是一个简单的HTTP'监听器'应该很容易组合在一起。首先通过侦听端口80并尝试从Android浏览器 - 如果可行,将侦听端口更改为6789(请记住打开家庭路由器/防火墙上的端口)。假设你已经开始工作了,试试使用你在局域网上使用wi-fi开发的基于套接字的东西,如果可行的话,那么试试3G。