top
Loading...
Javasocket功能的一個小應用
'########################################################
'大風(XuanKong)
'下面所顯示的代碼生成的jar文件你可以在www.xuankong.com獲得!
'#######################################################

Sun公司java語言的的推出可以說是一個劃時代的語言革命,這種語言同時能適應應用軟件領域和網絡開發領域,其優秀的網絡開發功能更是讓人驚嘆,利用java你可以輕松的實現在其他的語言中要花很多代碼和時間才能實現的功能:你可以很輕松的用java開發一個同Windows的那個notebook一樣的程序,甚至你可以朝開發word進軍,你可以很輕松的實現網絡通信,你可以在網絡中展現漂亮的圖像效果(這種效果你是使用gif.jpg以及flash始終做不到的),你可以使用java開發Webserver和中間件(參考www.apusic.com)實現負載均衡等功能;你也可以在開發你的郵件系統;可以生成功能非常強大的java組件運行于asp中,比vb、vc和Borland C++ builder開發相應的組件來的容易,而且功能也強大的多。java的種種精彩不是筆者可以在這里完全可以介紹完的,但是下面筆者給出的一段不超過20行的代碼可以讓你感覺到java這種語言的真正強大.。你如果能靈活的運用java,我相信,你一定可以做得比我更精彩!ok!let's begain!
本文利用Java的socket通信功能實現了下面兩種作用:
1、可以查詢internet中domain和ip的(具體的用法見后文);
2、可以在局域網中通過機器名查詢相應的ip和通過ip查詢相應的機器名;
原理:下面的代碼使用socket利用了系統查詢了相應的internet上的dns解析和局域網中dns解析來獲得相應的數據資料;
//代碼開始
/*
本代碼只是提供測試,不提供完全的實際應用的功能,但是你可以利用下面的思路開發你自己的相應的程序,請注意本文提供的socket通信在internet上查詢domain(或者ip)的功能不完全正確,因為本文使用的socket訪問方式不是訪問的相應的domain數據庫,所以不能實現精確的domain(或者ip)的查詢,但是一切在internet上能被訪問到的domain(或者ip)都可以都可以被查詢到相應的ip(或者domain),如果需要你也可以使用本文所提及socket訪問相應的domain數據庫得到完全正確的domain查詢功能!在run下面的程序以前,請確定你已經安裝了jdk1.3以及配置了相關的參數。
*/
import java.net.*;
class search
{
public static void main(String[] args)
{
try
{
InetAddress address=InetAddress.getByName(args[0]);
//獲得你要查詢的ip或者domain
System.out.println(address);
//輸出查詢結果
}
catch (Exception e)
{
//錯誤提示
System.out.println("對不起,你查詢的站點或者IP未被程序找到,可能原因如下");
System.out.println("1,該站點尚未注冊或者該站點尚未啟用");
System.out.println("2.你沒有連接到網絡");
System.out.println("3.該ip地址可能已被DHCP解析,但是尚未指向相應的站點");
}
}
}
//代碼結束
把上面的代碼save為search.java
好了進入dos模式使用"javac search.java"編譯search.java為search.class,然后,我們就可以開始使用我們的代碼來測試了!
1。如果你要查詢internet中domain,我們以www.sina.com為例你可以輸入:"java search www.sina.com" 你可以得到下面的結果:"www.sina.com/206.204.114.57",返回給你的數據中就包含了www.sina.com的ip地址;如果你再輸入:"java search 206.204.114.57"你返回的結果為"www.sina.com/206.204.114.57",同樣返回的結果包含了sina的domain,但是需要注意的如果你的ip解析了多個domain的話可能不能準確的通過ip反查domain,而且有的站點為了訪問的方便使用了不同的ip,即一個站點有幾個ip,這樣你返回的只是第一個ip地址,其他還有一些問題就留待你自己去發現了,前面說過本文只是給你提供一種思路;
2.在局域網中通過機器名反查ip:這點我相信是很有用的,嘿嘿,具體的使用方法和前面的差不多,但是你發現有了這個東西你可以很輕松的搞到任何人的相對應的機器名和ip地址,不要亂用喲!當然你也可以通過ip反查機器名;但是同樣有點不是問題的問題:如果該機器不存在的話是不會報錯的,而是以一種前后都是ip的形式返回結果,好了,其他的我也不多說了,你就慢慢的用吧!
上面給出的代碼可能對于不習慣java的朋友來說不是很好操作,但是你可以把它改成applet在瀏覽器中運行!
本文介紹的java功能只是java網絡功能部分中很小的一個部分,java強大的功能從本文提供的代碼只可以體現很小很小的一個部分,如果你的E文夠好,建議你多訪問一下java.sun.com多學習一下java.!
備注:本人環境Win2000 professional+jdk1.3

北斗有巢氏 有巢氏北斗