Is there any class in java or a package that one can use to manage IP configuration.
I mean i was planing to develop a cafe timing application that allows people to bring in there computer system and it will not allow the client system to browse when their time expires. And I want it to run on the server so there wont be need to have the application on the client system

haven't heard of a standard api that does that, but there's no-one to hold you back and write it.
let your client retreive the ip-address, send it to the server.
to let the client disconnect when "time expires", you could :
a. let the client run a thread which continously checks with the server wether or not it has expired, or, you could go the way I would
b. let the server send a disconnect-command to the client, based upon the time of login.

According to me the MAC-Address comes into play at the Data Link Layer, whereas Java can go down only till the Transport Layer. One of the reasons why I had read "ping" cannot be written in Java.

Ping cannot be accessed directly you can use Runtime to execute console ping command and read it in, but this is awkward solution

Ping cannot be accessed directly you can use Runtime to execute console ping command and read it in, but this is awkward solution

I actually meant implementing the "ping" utility completely in Java (note: not just invoking a ready to use implementation) is not possible, cause Java runs mostly on the Application or Transport layer.

Saying that 'XXX is not possible in Java' is pretty misleading IMO.

Is I/O and Networking possible in Java? You might say yes, there are packages like java.io.* and java.net.* for it. But is it really possible in *java*? Both I/O and Networking libraries which are part of the standard libraries at their core make JNI calls and are platform specific since the way I/O is performed is OS/platform specific. So as long as you have the proper JNI code in place along with dynamic libraries for your target platforms, almost anything is possible in Java. The same argument applies to 'Java only works at Application/Transport layer'.

But to answer the question, yes, a ping utiilty can't be written using the standard Java libraries, since AFAIK, Java doesn't allow creation of raw sockets which are needed to send ICMP packets.

Ping requires ICMP packets. These packets can only be created via a socket of the SOCK_RAW type. Currently, Java only allows SOCK_STREAM (TCP) and SOCK_DGRAM (UDP) sockets. It seems unlikely that this will be added very soon, since many Unix versions only allow SOCK_RAW sockets to be created by root, and winsock does not address ICMP packets (win32 includes an unsupported and undocumented ICMP.DLL).

Comments
Informative, Discovered another new thing from your post

So as long as you have the proper JNI code in place along with dynamic libraries for your target platforms, almost anything is possible in Java

Yep, Hard to disagree with that one, I guess should have mentioned
the Standard Java Library.

But being a Java programmer I did love the statement :-

almost anything is possible in Java

Thanks for the information on raw sockets ~s.o.s~, All I had known was Java (the core networking APIs of Java) works with TCP/IP or UDP Sockets and that Ping works with ICMP, never knew why they couldn't mix.

Also when I read some material on Raw Sockets, I noticed that the packets arriving on them bypass the normal processing on the TCP/IP Protocol stack (by the kernel), So **I guess** we can actually drop down not only to the Network layer, but also access the Data Link Layer headers here.
Thanks again, discovered another new thing today and Sorry for hijacking your thread awo.

The view presented by the Java programming language for anything networking related is too high level/abstract [which is a good thing from productivity POV].

Writing networking code in C is probably the best way of hacking around with the core networking protocols and to see how the things really work; something which has been on my TODO list for quite some time. :-)

This article has been dead for over six months. Start a new discussion instead.