如何在java中反映端口53上的UDP数据包?
我用Java编写了这个程序,我在Ubuntu 14下运行它 运行它时,它通过端口53将UDP数据包发送到在Debian 8.0下运行的缓存DNS服务器 服务器向源发送回复。如何修改程序,使服务器回复同一LAN中的另一个IP地址 节目如下:如何在java中反映端口53上的UDP数据包?,java,sockets,udp,Java,Sockets,Udp,我用Java编写了这个程序,我在Ubuntu 14下运行它 运行它时,它通过端口53将UDP数据包发送到在Debian 8.0下运行的缓存DNS服务器 服务器向源发送回复。如何修改程序,使服务器回复同一LAN中的另一个IP地址 节目如下: import java.io.*; import java.net.*; public class ClientSender { private static Object InetAdress; public static void main(St
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)
{
}
}}
}
import java.io.*;
导入java.net。*;
公共类ClientSender{
私有静态对象地址;
公共静态void main(字符串[]args){
int i;
对于(i=0;i,在Java中不能这样做
您当前的客户端IP地址将禁止服务器在lan连接中选择其他客户端的IP地址
这在Java中是不可能的。你不能;用于套接字的IP/端口对链接到此套接字。你为什么要这样做?感谢你所做的每一件事…我正在从事一个项目,以保护DNS服务器免受基于DNS反射的攻击,但我无法执行反射部分。我在一些小型项目中使用Java,但我没有在java socket编程中,我希望我能做到这一点,有没有其他方法可以在小范围内进行反射?谢谢你的回答,但我怎么做?我怎样才能使DNS服务器将发送的数据包反射到另一个IP地址?