DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Java (http://www.daniweb.com/forums/forum9.html)
-   -   IP blocking or MAC address blocking (http://www.daniweb.com/forums/thread163218.html)

awo Dec 20th, 2008 6:25 am
IP blocking or MAC address blocking
 
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

stultuske Dec 22nd, 2008 5:38 am
Re: IP blocking or MAC address blocking
 
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.

peter_budo Dec 22nd, 2008 6:18 am
Re: IP blocking or MAC address blocking
 
You can have look on java.net package, but there is not too much to it

stephen84s Dec 22nd, 2008 6:47 am
Re: IP blocking or MAC address blocking
 
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.

peter_budo Dec 22nd, 2008 7:13 am
Re: IP blocking or MAC address blocking
 
Ping cannot be accessed directly you can use Runtime to execute console ping command and read it in, but this is awkward solution

stephen84s Dec 22nd, 2008 9:25 am
Re: IP blocking or MAC address blocking
 
Quote:

Originally Posted by peter_budo (Post 762450)
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.

~s.o.s~ Dec 22nd, 2008 10:43 am
Re: IP blocking or MAC address blocking
 
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.
Quote:

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).

stephen84s Dec 22nd, 2008 11:38 am
Re: IP blocking or MAC address blocking
 
Quote:

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 :-
Quote:

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.

~s.o.s~ Dec 22nd, 2008 12:40 pm
Re: IP blocking or MAC address blocking
 
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. :-)


All times are GMT -4. The time now is 3:42 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC