一些背景知识:
我是一个为大学课程开发安卓游戏的团队的一员。我是网络负责人,我的目标是让运行在“客户端模式”的游戏向运行在“主机模式”的游戏提交输入。然后主机将执行所有物理/碰撞等,并发送回游戏的更新状态。
我相信我可以将游戏状态压缩到足以发送整个状态的效果(图形将在客户端完成)。
我的目标是让这个游戏在无线局域网上运行,使用我从中获得的 IPv4 地址
NetworkInterface.getNetworkInterfaces().
所有活动代码和用户输入都是在我的代码之外处理的,所以我基本上是在使用 Java 套接字。
问题:
我下面的代码应该向主机发送单个数据字节的单个数据包,告诉它有客户端想要连接。但是,在运行此代码后,我使用 Wireshark 跟踪所有数据包活动约 80 秒,我只能看到
11 2.825742000 MurataMa_41:d5:ed Broadcast ARP 42 Who has 192.168.0.25? Tell 192.168.0.24
即,未应答的 ARP 请求。我已经尝试了多个端口,以防出现问题,但我目前使用的是 5000。
int hostPort = 5000;
hostSocket = new DatagramSocket(hostPort);
byte [] buffer = new byte[1];
buffer[0] = 'h';
DatagramPacket hello = new DatagramPacket(buffer, buffer.length, hostAddress, hostPort);
hostSocket.send(hello);
那么,如何让主机 Android 设备响应 ARP 请求呢?我有一部 Android 2.2 手机发送请求,还有一部运行 Android 4.2.2 的 Nexus 7,它应该会接收它们。
编辑
我在发送时检查了 LogCat 输出是否有任何/所有异常。没有了。