sto cercando di leggere una serie di informazioni che mi arrivano in broadcasting sulla porta 1002 in udp ma avendo letto e creato un piccolo programma che legge il traffico UDP ho scoperto una cosa che non mi so spiegare.
codice mio programma
la lettura che mi rende questo programmino in alcuni punti risulta errata:codice:import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPReceive { public static void main(String args[]) { try { int port = 1002; DatagramSocket socket = new DatagramSocket(port); //InetAddress server = InetAddress.getByName("10.0.0.251"); byte[] buffer = new byte[4096]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); while (true) { socket.receive(packet); String msg = new String(buffer, 0, packet.getLength()); System.out.println(packet.getAddress().getHostName()); //System.out.println(" "); //System.out.println(msg); System.out.println(" "); System.out.println(stringToHex(msg)); stringHex(buffer,packet.getLength()); packet.setLength(buffer.length); } } catch (Exception e) { System.err.println(e); } } public static String stringToHex(String base) { StringBuffer buffer = new StringBuffer(); int intValue; for(int x = 0; x < base.length(); x++) { int cursor = 0; intValue = base.charAt(x); String binaryChar = new String(Integer.toBinaryString(base.charAt(x))); for(int i = 0; i < binaryChar.length(); i++) { if(binaryChar.charAt(i) == '1') { cursor += 1; } } if((cursor % 2) > 0) { intValue += 128; } if (intValue > 15) { buffer.append(Integer.toHexString(intValue)+"."); } else { buffer.append("0"+Integer.toHexString(intValue)+"."); } } return buffer.toString(); } public static Void stringHex(byte[] base, int leng) { StringBuffer buffer = new StringBuffer(); for (int x = 0; x < leng; x++) { buffer.append(base[x] + "."); } System.out.println(buffer.toString()); return null; } }
00.0c.c6.f6.a9.d8.00.00.1d3.82.00.00.30.39.3a.35.3 6.3a.b2.39.00.00.
ma invece da uno sniffer vedo i dati reali:
00.0c.c6.76.29.58.08.00.45.00.02.54.bf.9f.00.b9.40 .11.a2.47.0a.00.00.fb.0a.00
ora non mi so spiegare perché vedo informazioni a oltre 8 bit es ( 1d3 ) che poi mi degradano tutto il parchetto.
quale potrebbe essere il problema ?

Rispondi quotando
