我很好奇我将如何监听从服务器发送到客户端的所有传入数据包。我的目标是能够创建一个能够学习如何在线玩基本游戏的机器人。我最初让我的应用程序截取屏幕截图,裁剪它,并检查图像中的某些颜色范围,以根据相应像素的位置找到某些对象的位置,但这不是一个理想的创建方式一个高效的机器人,所以我决定试图弄清楚如何直接读取从游戏服务器和我的客户端发送的信息,以了解某些对象的位置。
也许有些东西我不明白但是我想知道是否有办法读取从服务器发送到我的localhost IP的数据包。我试图通过使用以下代码来侦听数据包并稍微摆弄它:
public class Receiver {
public static void main(String[] args) {
int port = args.length == 0 ? 57 : Integer.parseInt(args[0]);
new Receiver().run(port);
}
public void run(int port) {
try {
DatagramSocket serverSocket = new DatagramSocket(port);
byte[] receiveData = new byte[8];
System.out.printf("Listening on udp:%s:%d%n",
InetAddress.getLocalHost().getHostAddress(), port);
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
while(true)
{
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData(), 0,
receivePacket.getLength() );
System.out.println("RECEIVED: " + sentence);
// now send acknowledgement packet back to sender
InetAddress IPAddress = receivePacket.getAddress();
String sendString = "polo";
byte[] sendData = sendString.getBytes("UTF-8");
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
IPAddress, receivePacket.getPort());
serverSocket.send(sendPacket);
}
} catch (IOException e) {
System.out.println(e);
}
// should close serverSocket in finally block
}
}
信用:sending and receiving UDP packets using Java?
我还没有能够读取任何传入的UDP数据包。我已经尝试在几个不同的端口上侦听数据包了,但是我不确定如何测试我的应用程序是否正常工作而没有设置服务器应用程序来专门将数据包发送到我正在侦听的特定端口至)。我不完全确定从哪个开始我的个人项目,但是任何帮助/指导都会非常感激。