以下代码在android中试用过,它不使用直接WI-FI接收任何数据,这意味着发送者(桌面应用程序)和Android应用程序都在同一网络上。发送者应用程序知道WI-FI平板电脑的to地址,并将数据发送到该地址。
但是,下面的代码可以很好地将其作为独立的java应用程序运行。接收代码不使用InetAddress地址;它在安卓中是必需的吗?谁能发布通过WI-FI接收udp数据的例子。
发送者在知道平板电脑to地址的情况下将数据发送到平板电脑。发送方和接收方使用相同的端口。
我正在尝试获取数据包,并从数据包中获取内容。我不会向发送者回复任何东西。我是否需要向发送者回送任何内容。另外,我是否需要WI-FI管理器?
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class NetworkReceiver {
static boolean isFinish = false;
try {
DatagramSocket s = new DatagramSocket(2010);
System.out.println("setting up port");
byte[] data = new byte[12];
while (!isFinish)
{
System.out.println("creating datagram");
DatagramPacket p = new DatagramPacket(data, data.length);
s.receive(p);
System.out.println("got packet");
ByteBuffer bb = ByteBuffer.allocate(12).order(ByteOrder.LITTLE_ENDIAN);
bb.put(data);
bb.rewind();
System.out.println(bb.getFloat());
System.out.println(bb.getFloat());
System.out.println(bb.getFloat());
}
} catch (IOException e) {
e.printStackTrace();
}
}发布于 2013-09-25 02:34:28
但是,下面的代码可以很好地将其作为独立的java应用程序运行。
我假设您是从连接到同一个WIFI路由器的两台不同的PC上运行发送方和接收方应用程序,对吗?
我正在尝试获取数据包,并从数据包中获取内容。我不会向发送者回复任何东西。我是否需要向发送者回送任何内容。另外,我是否需要WI-FI管理器?
不,您不需要以任何方式回显或响应接收到的数据包。
您的接收器代码看起来足够好,它至少应该接收发送的第一个数据包。如果你的AndroidManifest.xml权限不允许网络访问,安卓会抱怨的。
在你确认你的发送者应用程序(你应该包括代码)真的将数据包发送到WIFI网络之前,我所能做的就是确保你能从PC连接到你的平板电脑。然后在您的发送方PC上安装Wireshark,并查看它运行时发出的UDP数据包。检查目的地址和端口。确保它们看起来像是可以到达您的平板电脑。
最后,我再次假设您没有尝试多播UDP,因为您已经在发送者中指定了平板电脑的IP地址。如果是,则需要使用WifiManager获取多播锁。
https://stackoverflow.com/questions/18279015
复制相似问题