一些背景:
我是一个为大学课程开发Android游戏的团队的一员。
我是负责网络的人,我的目标是让游戏以“客户端模式”运行,将输入提交给以“主机模式”运行的游戏。然后主持人将完成所有物理/碰撞等,并发回游戏的更新状态。
我有信心我可以压缩游戏的状态,以便发送它的整个状态将正常工作(图形将在客户端完成)。
我的目标是让这个游戏在无线局域网上工作,使用我从
获得的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输出是否存在任何/所有异常。没有。