java - 如何在java中反射(reflect)端口53上的UDP数据包?

标签 java sockets udp

我用 Java 编写了这个程序,并在 Ubuntu 14 下运行它。

运行时,它通过端口 53 将 UDP 数据包发送到在 Debian 8.0 下运行的缓存 DNS 服务器。

服务器向源发送回复。如何修改程序,使服务器回复另一个IP地址而不是在同一局域网内?

这是程序:

import java.io.*;

import java.net.*;


public class ClientSender {
private static Object InetAdress;


public static void main(String[] args) {

int i ;

for (i=0;i<1000;i++){

DatagramSocket skt;

try{
           /////////////////////////////////////////
    skt = new DatagramSocket();     /////creating socket
    String msg = "Test";//////////message

    byte[] b =msg.getBytes(); /// creating message

            InetAddress host =InetAddress.getByName("192.168.1.3"); ///destination IP address

            int serverSocket = 53; // Destination Port

               ///////////////////////////////////////////////////////////////

            DatagramPacket request =new DatagramPacket(b,b.length,host,serverSocket);
            skt.send(request);                                                        /////////////////////////creating packet

            ///////////////////////////////////////////////////////////////////////////////

            //..................................// for receiving replies from destnation
            byte [] buffer = new byte[1000];
            DatagramPacket reply = new DatagramPacket (buffer, buffer.length);
            skt.receive(reply);                ///////////////////////////////////lestining to replies from destination

            skt.close();///////////////closing socket

            System.out.println(new String(request.getData()));
            System.out.println(new String(reply.getData()));



}
    catch (Exception ex)
    {

        }
}}

}

最佳答案

在 Java 中你无法做到这一点。

您当前的客户端 IP 地址将禁止服务器在您的 LAN 连接中选择不同客户端的 IP 地址。

这在 Java 中是不可能的。

关于java - 如何在java中反射(reflect)端口53上的UDP数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180055/

相关文章:

java - 无法使用 Mongodb Java 驱动程序更新内部 Arraylist 对象

java - (java.net.SocketException) 在处理请求 : Connection reset by peer: socket write error 时被捕获

python - recv_into 一个 numpy 数组

linux - 如何从内核中的 UDP 读取缓冲区中删除数据包?

c# - 多客户端udp服务器正确处理错误代码10054

c++ - 将 RTP 流数据写入文件

java - 带有 parseDouble 的 Hadoop Mapreduce 代码在一个系统中给出异常,但在其他系统中运行良好?

java - JTables,如何从文本文件向Jtable中插入数据

java - 在代码库中查找 Java Reflection 的用法

c - sendto 中的参数无效