NIO, DHCP und ein Netzwerkneuling

Status
Nicht offen für weitere Antworten.
M

microtux

Gast
Hallo!

Bin gerade dabei, eine DHCP-API zu schreiben, um mir den Umgang mit NIO und UDP anzulernen. Ich bin jetzt schon soweit, dass ich Broadcasts empfange und DHCP-Pakete zur Antwort erstellen kann (als ByteBuffer/byte-Array). Nur wie broadcaste ich diesen ByteBuffer jetzt in mein Netz? Mit DatagramChannel.send() und 255.255.255.255:68 als InetSocketAddress spuckt er mir eine Exception (kann leider gerade nicht testen, welche, sobald ich einen 2. pc da hab, poste ichs), genauso bei DatagramChannel.socket().send(). Kann ich diese Methoden überhaupt zum Broadcasten verwenden? Hier mein Code:

Code:
//Parameter: Host-IP, neue Client-IP und Hostname
ByteBuffer toSend =dhcpPacket.createOfferPacket(new byte[]{(byte) 192, (byte) 168, 0, (byte) 190}, new byte[]{(byte) 192, (byte) 168, 0, (byte) 199}, new byte[64]).toByteBuffer();
//DHCP-Client-Port: 68
getChannel().send(toSend, new InetSocketAddress("255.255.255.0", 68));

Vielen Dank schon mal!
MfG microtux
 

lhein

Top Contributor
Kleine Verständnisfrage:

Du empfängst einen Broadcast DHCP-Request. Der wurde als Broadcast gesendet, weil der DHCP-Server nicht bekannt ist. Dein DHCP Server versucht, einen Broadcast als Antwort zu senden? Warum? Du kennst doch den Requester-Host oder nicht? (sorry für die dumme Frage, bin in Sachen DHCP Interna nicht wirklich bewandert)

Btw. schau Dich doch mal in fremden Sources um.

Koders

lhe
 

Niki

Top Contributor
Das mit den bytes wird nicht funktionieren. Du weißt schon dass ein byte einen Wertebereich von -128 bis 127 hat. Da wirds schwer 192 hinein zu bekommen :roll:
 
G

Gast

Gast
@lhe: Der Zielhost ist zwar bekannt, nur hat dieser ja noch keine IP -> Broadcast mit Requester-Id (ist im Dhcp-Paket)

@Niki: Ich kenne den Bytebereich, aber wenn man ints von 128 bis 255 in ein byte castet, wird es automatisch in ein Byte im Wertebereich -128 bis 0 umgewandelt.

Danke aber für eure Nachrichten!
 
G

Guli

Gast
@Niki
Ist das denn inzwischen auch unter Java so? Ich weiß noch, dass ich mal unter Java mit Byte gekämpft habe, da dieser irgendwie von -128 bis 128 aufnehmen konnte. Der Bereich passt aber nicht in 8bit Informationsspeicher. Aber auch nach einigen Recherchen schien es so zu sein, dass das Verhalten so gewollt war (der Grund fällt mir aber nicht mehr ein).
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben