詳解一個Java的Socket功能小應用
Sun公司Java語言的的推出可以說是一個劃時代的語言革命,這種語言同時能適應應用軟件領域和網絡開發領域,其優秀的網絡開發功能更是讓人驚嘆,利用Java你可以輕松的實現在其他的語言中要花很多代碼和時間才能實現的功能:你可以很輕松的用Java Socket開發一個同Windows的那個notebook一樣的程序,甚至你可以朝開發word進軍,你可以很輕松的實現網絡通信,你可以在網絡中展現漂亮的圖像效果(這種效果你是使用gif.jpg以及flash始終做不到的),你可以使用Java開發Webserver和中間件(參考www.apusic.com)實現負載均衡等功能;你也可以在開發你的郵件系統;可以生成功能非常強大的Java Socket組件運行于ASP中,比VB、VC和Borland C++ builder開發相應的組件來的容易,而且功能也強大的多。Java的種種精彩不是筆者可以在這里完全可以介紹完的,但是下面筆者給出的一段不超過20行的代碼可以讓你感覺到Java這種語言的真正強大.。你如果能靈活的運用Java Socket,我相信,你一定可以做得比我更精彩!ok!lets 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",返回給你的數據中就包含了
2.在局域網中通過機器名反查ip:這點我相信是很有用的,嘿嘿,具體的使用方法和前面的差不多,但是你發現有了這個東西你可以很輕松的搞到任何人的相對應的機器名和ip地址,不要亂用喲!當然你也可以通過ip反查機器名;但是同樣有點不是問題的問題:如果該機器不存在的話是不會報錯的,而是以一種前后都是ip的形式返回結果,好了,其他的我也不多說了,你就慢慢的用吧! 上面給出的代碼可能對于不習慣Java的朋友來說不是很好操作,但是你可以把它改成applet在瀏覽器中運行! 本文介紹的Java功能只是Java網絡功能部分中很小的一個部分,Java強大的功能從本文提供的代碼只可以體現很小很小的一個部分,如果你的E文夠好,建議你多訪問一下Java.sun.com多學習一下Java.! 備注:本人環境Win2000 professional+jdk1.3 【編輯推薦】