2012-05-18 140 views
0

我想用我的智能手机通过WiFi连接到我的笔记本电脑和其他智能手机。 我写了一个应用程序(android),但只能找到wifi网络,没有设备。 没有人有任何想法如何找到智能手机和笔记本电脑?如何将手机连接到我的笔记本电脑?

+0

您是否试图将它们放入网络中。它是用于文件共享和其他事情吗? –

+0

我想你可能会将TCP与蓝牙等东西混淆。 – npinti

+0

这取决于。你的意思是这样的:https://play.google.com/store/apps/details?id = net.szym.barnacle(使用这个程序,Android手机创建和通告一个特别的WiFi网络,其他设备可以通过它连接)? – Piskvor

回答

1

从你的问题我认为你的智能手机是基于Android。我还假设,当你说你“找不到设备”时,你的意思是你的笔记本电脑创建的WLAN网络。

我似乎回想起在Android文档中Android设备无法连接(甚至检测)ad-hoc无线网络的地方。 Ad-hoc网络通常是由非专用网络设备(例如Windows计算机)托管的网络。

您可能能够使用某些实用程序软件来使用计算机创建基础设施类型的无线网络(而不是特设)。除此之外,你几乎局限于使用由网络路由器托管的实际基础架构无线网络,并将所需的设备连接到其中,这实质上是通常的(W)局域网使用场景。

+0

我可以用tcp ip连接吗? – natalia

+0

就是这样。将设备(笔记本电脑和智能手机)连接到同一个WLAN时,它们通常可以**通过TCP/IP连接直接与另一个通话。然而,设备到设备通信可能受到托管无线网络的设备的某些设置的限制。您还应该确保您的笔记本电脑的防火墙软件不会阻止入站网络通信。 – Kallja

0

好问题!与蓝牙和其他一些协议不同,WiFi不允许您发现网络中的其他设备。要在WiFi网络上查找其他设备,您需要在更高层的TCP堆栈中运行应用程序。然后,您可以向所有设备发送TCP或UDP数据包,如果您收到回复,几乎可以确定其他设备在网络中。这是一个相当脆弱的过程,许多障碍(如防火墙)可能会阻止发现过程。这就是为什么您需要等待Windows才能发现网络打印机或网络计算机的原因。

要在Java/Android(或任何其他平台)中实现这样的事情,最简单的方法是编写运行后台线程并听取broadcast messages的应用程序。当您想要启动一个发现过程时(在发现者一侧),您发送一条广播消息并等待答复。另一方面(discover-ee方面),如果您收到广播消息,您只需回复带有所需信息(例如设备名称)的消息。在收到回复消息(发现者)后,您可以轻松找出网络中的其他设备。

或者,您可以使用TCP套接字进行探测。在这种情况下,由于不支持广播消息,因此您需要尝试连接到网络中的每个可能的IP地址(通常至少255个IP地址),这会导致进程速度变慢。

This可能会有所帮助。

+0

你会做什么?我是网络编程新手。请您推荐任何教程或链接。 – natalia

+0

这很大程度上取决于您试图达到的目标。如果是文件共享,那么在Android平台上有应用程序可以开箱即用。例如Astro可以用来访问Windows共享。如果您需要更多自定义实现,我建议您在Oracle.com上通过[Java网络教程路径](http://docs.oracle.com/javase/tutorial/networking/index.html)来获取您开始。 – Kallja

+0

我想从传感器节点读取数据(通过WiFi),所以我想像笔记本电脑和智能手机。 – natalia

相关问题