Olá,
tenho o seguinte código, que simplesmente envia um pacote udp para o endereço escohlido e espera a resposta
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class TestCehcksum {
public static void main(String[] args) {
try {
DatagramSocket socket = null;
socket = new DatagramSocket();
socket.setSoTimeout(1000);
byte[] buf = new byte[80];
buf[0] = (byte) 0xa8;
buf[1] = 0x03;
InetAddress address = InetAddress.getByAddress(new byte[] { (byte) 192, (byte) 168, 0, (byte) 148 });
DatagramPacket packet = new DatagramPacket(buf, 80, address, 1000);
DatagramPacket receber = null;
socket.send(packet);
byte[] vaiSerRecebido = new byte[80];
receber = new DatagramPacket(vaiSerRecebido, vaiSerRecebido.length);
socket.receive(receber);
socket.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
esse código funciona corretamente no windows xp e no ubuntu, mas no windows 7 não estava chegando a resposta. Utilizei o Wireshark para analisar os pacotes enviados, e percebi que no windows 7 o checksum do protolo IP está saindo sempre 0x0000, e o próprio wireshark aponta o erro no checksum. Alguém tem alguma idéia do que pode estar acontecendo?
grato.