dhcp request

Status
Nicht offen für weitere Antworten.
Hi,
wie kann ich in Java möglichst einfach und unkompliziert, was soviel heißen soll wie "möglichst kurz!", einen DHCP-Server kontaktieren? Letzten Endes soll es lediglich darum gehen, die Funktionstüchtigkeit dieses Servers zu überprüfen, quasi eine Art Socket zu diesem herzustellen. Da DHCP aber UDP verwendet, ist diese Variante leider nicht möglich! Was habt Ihr da für Ideen, diesen Serverdienst über Port 67 anzusprechen?
THX
 

foobar

Top Contributor
http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramPacket.html#DatagramPacket(byte[],%20int,%20java.net.InetAddress,%20int)
RTFM
 
G

Gast

Gast
was bist denn du für ein schlaumeier?! - entschuldige meinen Ausdruck, aber hast Du Dir die Java-Doku zu dieser Klasse schon selbst angesehen? Da steht nämlich nichts über den genauen Aufbau von "outbuf bzw. len" drinnen! Was nützt mir die Klasse mit seinen Konstruktoren, Methoden etc. wenn ich an einem ganz anderen Problem scheitere?
Was ich wissen will ist, was z.B. "outbuf" für eine Größe (Arraylänge) sein muss, bzw. woraus sich "len" zusammensetzt -> kann ja nicht beliebige Werte annehmen, so quasi "probier einmal" ...
Danke an alle die darüber etwas mehr wissen.
lg
 

Grizzly

Top Contributor
JavaDoc hat gesagt.:
public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
Constructs a datagram packet for sending packets of length length to the specified port number on the specified host. The length argument must be less than or equal to buf.length.

Im Array buf stehen die Daten, die Du versenden möchtest. In length steht die Länge bzw. Anzahl der Daten, die vom Array buf übermittelt werden sollen. Dabei darf length natürlich nur <= buf.length sein. Denn: Ich kann ja nicht mehr Daten versenden, als ich habe - weniger allerdings schon.

Hab' ich damit Deine Frage beantwortet? Ansonsten musst Du sie halt nochmal posten und etwas umformulieren. ;)
 
Hi Grizzly,
da wird die ganze Angelegenheit schon etwas klarer! ;-)
Was mich dann noch interessiert ist, wie es Du anstellen würdest, einen DHCP-Server auf Funktion zu überprüfen. Da DHCP ja auf UDP basiert nützt es mir wenig, dem Server Daten zu schicken wenn ich nicht weiß ob sie ankommen - oder hast Du eine Ahnung wie eben ein Request in DHCP aussehen muss, was will der für Daten für eine Rückmeldung? Oder bekomme ich ohnehin was rein wenn ich auf dem Port des Servers "horche"?
Wie Du siehst will ich lediglich ein Lebenszeichen eines DHCP-Servers mit bekannten IP u Port! wie stell ich das am besten an?
Thx
Chris
 

Grizzly

Top Contributor
UDP bekommt von Haus aus keine Rückmeldung. Das ist ja der Witz an dem Protokoll bzw. Sub-Protokoll vom IP-Protokoll.

Wie Du ein Lebenszeichen bekommst? Sicher gibt es eine Möglichkeit einfach den Status des DHCP Servers abzufragen. Dazu musst Du Dir halt mal das entsprechende RFC durchlesen.

Bei DHCP selber kann ich Dir leider nicht weiterhelfen, da ich mich damit noch nicht beschäftigt habe.
 
und wie kann ich den DHCP dazu auffordern, mir etwas zu senden? genau das ist ja das Problem, dass ich noch nicht genau weiß, wie ich den dazu bringe! die RFC hab ich schon vorbereitet, wenns nicht anders geht muss ich wohl aus der schlau werden.

einen gewöhnlichen ServerSocket kann ich hierfür doch nicht verwenden, eben wegen UDP!... oder hab ich da was missverstanden?

oder Bleiglanz zeigt mir eine Variante, da wär ich schon mal froh drüber!

THX
Chris
 

Bleiglanz

Gesperrter Benutzer
einfacher empfang eines pakets

http://people.westminstercollege.edu/faculty/ggagne/sigcse2003/UDP/UDPDiscardServer.java

oder auch vom Meister selbst
Receiving UDP Datagrams

*

Construct a DatagramSocket object on the port on which you want to listen.
*

Pass an empty DatagramPacket object to the DatagramSocket's receive() method.

public synchronized void receive(DatagramPacket dp) throws IOException

*

The calling thread blocks until a datagram is received.
*

dp is filled with the data from that datagram.
*

Use getPort() and and getAddress() to tell where the packet came from, getData() to retrieve the data, and getLength() to see how many bytes were in the data.
*

If the received packet was too long for the buffer, it's truncated to the length of the buffer.
*

Length is reset when packet is received

For example,
Code:
try {
  byte buffer = new byte[65536]; 
  DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);
  DatagramSocket ds = new DatagramSocket(2134);
  ds.receive(incoming);
  byte[] data = incoming.getData();
  String s = new String(data, 0, data.getLength());
  System.out.println("Port" + incoming.getPort() + " on " 
   + incoming.getAddress() + " sent this message:");
  System.out.println(s);
}
catch (IOException e) {
  System.err.println(e);
}
http://www.cafeaulait.org/slides/sd...Part_2__Sockets__Server_Sockets__and_UDP.html
 

Bleiglanz

Gesperrter Benutzer
dann brauchst dur nur noch den inhalt auslesen

1 8 Bit Operation
2 8 Bit Hardware
3 8 Bit Länge der Hardwareadresse
4 8 Bit Hops
5 32 Bit Transaktionsnummer
6 16 Bit Sekunden des Bootvorgangs
7 16 Bit Flags
8 32 Bit IP Adresse des Clients
9 32 Bit Zugeteilte IP Adresse
10 32 Bit IP Adresse des Servers
11 32 Bit IP Adresse des Routers
12 128 Bit Hardwareadresse des Clients
13 512 Bit Hostaname des Servers
14 1024 Bit Dateiname
15 n Bit Option
 

foobar

Top Contributor
was bist denn du für ein schlaumeier?!

Parameters:
buf - the packet data.
length - the packet length.
address - the destination address.
port - the destination port number.
Quelle: http://java.sun.com/j2se/1.4.2/docs/api/java/net/DatagramPacket.html#DatagramPacket(byte[],%20int,%20java.net.InetAddress,%20int)

Wer lesen kann, ist klar im Vorteil.
 
ich weiß nicht @footbar, irgendwie werde ich aus Dir einfach nicht recht schlau! zum Glück aber hab ich ja jetzt eine Richtung für mein Problem, dagegen bleibt das Problem Deines Links immer noch bestehen: Aus der Java-Klassenbibliothe allein bekomm ich garnichts raus, ich finde da sollte man zumindest Wissen, wie das annähernd funktioniert, sonst bleibt man auf der Strecke! --> zumindest hab ich aber jetzt mal nen Schimmer ...

Thx @ll die sich die Mühe mal gemacht haben, mir zu helfen -> bin allerdings für weitere Tipps immer offen ;-)
 

Grizzly

Top Contributor
christophersn hat gesagt.:
ich weiß nicht @footbar, irgendwie werde ich aus Dir einfach nicht recht schlau! zum Glück aber hab ich ja jetzt eine Richtung für mein Problem, dagegen bleibt das Problem Deines Links immer noch bestehen: Aus der Java-Klassenbibliothe allein bekomm ich garnichts raus, ich finde da sollte man zumindest Wissen, wie das annähernd funktioniert, sonst bleibt man auf der Strecke! --> zumindest hab ich aber jetzt mal nen Schimmer ...

Ähm, zur Verteidung von foobar muss ich sagen, dass ich in meinem Post eigentlich auch nix anderes gemacht habe, als die API ins Deutsche zu übersetzen :) . Und Englisch sollte man beim Programmieren schon verstehen können ;) .

Ansonsten würde ich Dir das OpenBook Java ist auch eine Insel von Galileo Computing an's Herz legen. Da findest Du zu vielen Themen eine praktische Einführung. Ansonsten bietet Sun selber auch jede Menge Tutorials zu fast allen Themen an.
 
G

Gast

Gast
oh Grizzly, entschuldigung die Annahme dass Dein Beitrag hilfreich war ...
Ich versteh einfach die Typen nicht, die nicht zum eigentlichen Thema antworten können ... ich denke, mehr muss man nicht sagen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java DHCP Anfrage Netzwerkprogrammierung 18
M NIO, DHCP und ein Netzwerkneuling Netzwerkprogrammierung 4
A Methode zum ermitteln des DHCP-Servers & DNS-Servers? Netzwerkprogrammierung 8
M herausbekommen, ob IP Einstellungen von DHCP Server Netzwerkprogrammierung 8
Thallius HTTP Kann man den Raw HTTPS Request irgendwie ausgeben lassen? Netzwerkprogrammierung 6
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
J API Aufruf mit GET Request und HMAC Netzwerkprogrammierung 3
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
N Post u Head Request an Server Netzwerkprogrammierung 4
M http request and response Netzwerkprogrammierung 0
J Json von Html request einlesen Netzwerkprogrammierung 0
T curl request in java umwandeln Netzwerkprogrammierung 4
S PUT-Request Netzwerkprogrammierung 0
P Java Deauth / Deauthentication request Netzwerkprogrammierung 10
C Android: Json-POST Request zu REST Webservice Netzwerkprogrammierung 2
R Seltsames Verhalten bei GET Request Netzwerkprogrammierung 7
Y HTTP No request data found Netzwerkprogrammierung 2
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
B Post Request in Java Netzwerkprogrammierung 11
D OT JavaScript JQuery AJAX Request Netzwerkprogrammierung 2
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
T HTTP POST Request Netzwerkprogrammierung 3
E HTTP Request? Netzwerkprogrammierung 4
L Body eines http Request auslesen Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
ARadauer POST Request absetzen.. Netzwerkprogrammierung 3
J GET Request Netzwerkprogrammierung 1
hdi POST Request (HttpConnection) Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
J 403 error bei POST request Netzwerkprogrammierung 3
G auf http-request antworten. Netzwerkprogrammierung 3
G JMS Objektzugriff Request Reply erzeugt lediglich Kopie Netzwerkprogrammierung 4
L Java HTTP Request Netzwerkprogrammierung 3
S HTTP Request erstellen Netzwerkprogrammierung 2
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
B lange Strings in http-Request? Netzwerkprogrammierung 3
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
P Easy Http Request Netzwerkprogrammierung 9
A HTTPS-Request via Proxy mit Konfigurationsskript Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3
J HTTP Request Netzwerkprogrammierung 2
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
D Bad Request bei Dateiload Netzwerkprogrammierung 2
X mehrere Request über eine HttpURLConnection Netzwerkprogrammierung 2
G Http Request Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben