使用JAVA編寫網絡通信程序

1 Java中輸入/輸出流概念:

過濾流DataInputStream 和DataOutputStream 除了分別作爲FilterInputStream 和FilterOutputStream的子類外,還分別實現了接口DataInput 和DataOutput。接口DataInput 中定義的方法主要包括從流中讀取基本類型的數據、讀取一行數據、或者讀取指定長度的字節數,如readBoolean() readInt()、readLine()、readFully()等。接口DataOutput中定義的方法主要是向流中寫入基本類型的數據或者寫入一定長度的字節數組,如writeChar()、writeDouble() DataInputStream可以從所連接的輸入流中讀取與機器無關的基本類型數據,用以實現一種獨立于具體平台的輸入方式;DataInputStream 可以向所連接的輸出流寫入基本類型的數據。

2 Socket 機制

Socket是面向客戶/服務器模型設計的,網絡上的兩個程序通過一個雙向的通訊連接實現數據的交換,這個雙向鏈路的一端稱爲一個Socket。 Socket通常用來實現客戶方和服務方的連接。客戶程序可以向Socket寫請求,服務器將處理此請求,然後通過Socket將結果返回給用戶。

Socket通信機制提供了兩種通訊方式:有聯接和無聯接方式,分別面向不同的應用需求。使用有聯接方式時,通信鏈路提供了可靠的,全雙工的字節流服務。在該方式下,通信雙方必須創建一個聯接過程並建立一條通訊鏈路,以後的網絡通信操作完全在這一對進程之間進行,通信完畢關閉此聯接過程。使用無聯接方式時其系統開銷比無聯接方式小,但通信鏈路提供了不可靠的數據報服務,不能保證信源所傳輸的數據一定能夠到達信宿。在該方式下,通信雙方不必創建一個聯接過程和建立一條通訊鏈路,網絡通信操作在不同的主機和進程之間轉發進行。

3 Java語言

Java語言的優點主要表現在:簡單、面向對象、多線程、分布性、體系結構中立、安全性等方面。

(1) 簡單性

Java與C++語言非常相近,但Java比C++簡單,它抛棄了C++中的一些不是絕對必要的功能,如頭文件、預處理文件、指針、結構、運算符重載、多重繼續以及自動強迫同型。 Java實現了自動的垃圾收集,簡化了內存治理的工作。這使程序設計更加簡便,同時減少了出錯的可能。

(2) 面向對象

Java提供了簡單的類機制和動態的構架模型。對象中封裝了它的狀態變量和方法,很好地實現了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼續和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現了代碼的複用,又提供了一種動態的解決方案。

Java是一種完全面向對象的程序設計語言,它除了數組、布爾和字符三個基本數據類型外的其它類都是對象,它不再支持全局變量。在Java中,假如不創建新類就無法創建程序,Java程序在運行時必須先創建一個類的實例,然後才能提交運行。

Java同樣支持繼續特性,Java的類可以從其它類中繼續行爲,但Java只支持類的單重繼續,即每個類只能從一個類中繼續。

Java支持界面,界面答應程序員定義方法但又不立即實現,一個類可以實現多個界面,利用界面可以得到多重繼續的許多優點而又沒有多重繼續的問題。

(3) 多線程

多線程使應用程序可以同時進行不同的操作,處理不同的事件。在多線程機制中,不同的線程處理不同的任務,他們之間互不幹涉,不會由于一處等待影響其他部分,這樣輕易實現網絡上的實時交互操作。

Java程序可以有多個執行線程,如可以讓一個線程進行複雜的計算,而讓另一個線程與用戶進行交互,這樣用戶可以在不中斷計算線程的前提下與系統進行交互。多線程保證了較高的執行效率。

(4) 分布性

Java是面向網絡的語言。通過它提供的類庫可以處理TCP/IP協議,用戶可以通過URL地址在網絡上很方便的訪問其他對象。

(5) 體系結構中立

Java是一種網絡語言,爲使Java程序能在網絡的任何地方運行,Java解釋器生成與體系結構無關的字節碼結構的文件格式。Java爲了做到結構中立,除生成機器無關的字節碼外,還制定了完全統一的語言文本,如Java的基本數據類型不會隨目標機的變化而變化,一個整型總是32位,一個長整型總是64位。

爲了使Java的應用程序能不依靠于具體的系統,Java語言環境還提供了用于訪問底層操作系統功能的類組成的包,當程序使用這些包時,可以確保它能運行在各種支持Java的平台上。

java.lang: 一般的語言包。其中包括用于字符串處理、多線程、異常處理和數字函數等的類,該包是實現Java程序運行平台的基本包

java.util: 實用工具包。其中包括哈希表、堆棧、時間和日期等

java.io: 基于流模型的輸入/輸出包。該包用統一的流模型實現了各種格式的輸入/輸出,包括文件系統、網絡和設備的輸入/輸出等

java.net: 網絡包。該包支持TCP/IP協議,其中提供了socket、URL和WWW的編程接口

java.awt: 抽象窗口工具集。其中實現了可以跨平台的圖形用戶界面組件,包括窗口、菜單、滾動條和對話框等

java.applet: 支持applet程序設計的基本包

(6) 安全性

用于網絡、分布環境下的Java必須要防止病毒的入侵,Java不支持指針,一切對內存的訪問都必須通過對象的實例變量來實現,這樣就防止了程序員使用欺騙手段訪問對象的私有成員,同時也避免了指針操作中輕易産生的錯誤。

 
使用 Java 編寫 B/S 網絡通信程序
使用 Java 編寫 B/S 網絡通信程序
  網絡上的系統結構多爲客戶/服務器模式,服務器端負責數據和圖像等的存儲、維護、治理以及傳遞,客戶端則負責人機界面的操作、送出需求及顯示收回的數據。    下面介紹一下如何使用java來進行網絡編程:   ...查看完整版>>使用 Java 編寫 B/S 網絡通信程序
 
使用Java編寫B/S網絡通信程序
  網絡上的系統結構多爲客戶/服務器模式,服務器端負責數據和圖像等的存儲、維護、管理以及傳遞,客戶端則負責人機界面的操作、送出需求及顯示收回的數據。  下面介紹一下如何使用JAVA來進行網絡編程:  1) 由...查看完整版>>使用Java編寫B/S網絡通信程序
 
利用java編寫網絡通信程序
利用java編寫網絡通信程序作者:于洪斌、馬俊光、車雪松  一、java與網絡通信   java是一門適合于分布式計算環境、尤其是Internet程序設計的語言。這不僅僅在于java具有很好的安全性和可移植性,還在于java爲Int...查看完整版>>利用java編寫網絡通信程序
 
用Winsock編寫網絡通信程序
文/徐大華  Winsock是Microsoft Windows提供的網絡編程接口,它提供了基于TCP/IP協議的接口實現方法。用戶不必了解TCP,通過設置Winsock控件的屬性並調用它的方法,就可以與一台遠程計算機相連,從而實現數據傳輸。...查看完整版>>用Winsock編寫網絡通信程序
 
用Java編寫簡單的UDP網絡通信程序
  Java中封裝了大量的socket API,爲編寫網絡通信程序提供了極大的方便。在計算機網絡的學習中,大家都已熟練把握了TCP/UDP的基本原理,在此不在贅述。僅給出接收端和發送端的源代碼,供大家討論學習。發送端代碼如...查看完整版>>用Java編寫簡單的UDP網絡通信程序