導航:首頁 > 編程大全 > java網路通信編程教材

java網路通信編程教材

發布時間:2024-08-22 01:42:28

java緗戠粶緙栫▼搴旇ユ庢牱鍦ㄥ㈡埛絝鍜屾湇鍔″櫒闂村疄鐜伴氫俊錛

浠ュ墠鍐欑殑錛岀収璐翠簡銆傘傘傛湇鍔″櫒絝錛歩mport java.awt.*;x0dx0aimport java.awt.event.WindowAdapter;x0dx0aimport java.awt.event.WindowEvent;x0dx0aimport java.io.*;x0dx0aimport java.net.*;/*6銆 閲囩敤UDP鍗忚錛岀紪鍐欎竴涓狫ava緗戠粶搴旂敤紼嬪簭錛岃ュ簲鐢ㄥ垎鏈嶅姟鍣ㄧ紼嬪簭鍜屽㈡埛絝紼嬪簭涓ら儴鍒嗐俓x0dx0a* 瀹㈡埛絝鎸囧畾涓涓鏈嶅姟鍣ㄤ笂鐨勬枃浠跺悕錛岃╂湇鍔″櫒鍙戝洖璇ユ枃浠剁殑鍐呭癸紝鎴栬呮彁紺烘枃浠朵笉瀛樺湪銆俓x0dx0a* 錛20鍒嗭級錛堟湇鍔$紼嬪簭鍜屽㈡埛絝紼嬪簭鍒嗗埆鍛藉悕涓篠erver.java鍜孋lient.java錛*/x0dx0apublic class N4BT6 extends Framex0dx0a{x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet ;byte[] buf ;x0dx0aFile file ;x0dx0aFileInputStream input;x0dx0aString message = "璇ユ枃浠朵笉瀛樺湪";x0dx0aTextArea text;x0dx0apublic N4BT6(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0ax0dx0abuf = new byte[1024];x0dx0atryx0dx0a{x0dx0asocket = new DatagramSocket(1230);x0dx0apacket = new DatagramPacket(buf, buf.length);x0dx0asocket.receive(packet);x0dx0afile = new File(new String(packet.getData()));x0dx0asocket = new DatagramSocket();x0dx0a} x0dx0acatch (Exception e)x0dx0a{e.printStackTrace();x0dx0a}x0dx0ax0dx0aif(file.exists())x0dx0a{x0dx0atryx0dx0a{x0dx0abuf = new byte[(int)file.length()];x0dx0apacket = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);x0dx0ainput = new FileInputStream(file);x0dx0ainput.read(buf);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (IOException e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0aelsex0dx0a{x0dx0atryx0dx0a{x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1234);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0ax0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6("Server");x0dx0a}x0dx0a}x0dx0a瀹㈡埛絝錛歩mport java.awt.*;x0dx0aimport java.awt.event.*;x0dx0aimport java.net.DatagramPacket;x0dx0aimport java.net.DatagramSocket;x0dx0aimport java.net.InetAddress;public class N4BT6_2 extends Framex0dx0a{x0dx0aTextArea text;x0dx0aString message = "Q.txt";x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet;x0dx0abyte[] buf;x0dx0apublic N4BT6_2(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0atryx0dx0a{x0dx0ax0dx0asocket = new DatagramSocket();x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1230);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0ax0dx0atryx0dx0a{x0dx0abuf = new byte[1024];x0dx0asocket = new DatagramSocket(1234);x0dx0apacket = new DatagramPacket(buf,buf.length);x0dx0asocket.receive(packet);x0dx0atext.append(new String(buf));x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6_2("Client");x0dx0a}x0dx0a}

⑵ 求推薦JAVA入門書籍

1,《Head First Java》java入門書籍

《Head First Java》是本完整的面向對象(object-oriented,OO)程序設計和Java的學習指導。此書是根據學習理論所設計的,讓你可以從學習程序語言的基礎開始一直到包括線程、網路與分布式程序等項目。最重要的,你會學會如何像個面向對象開發者一樣去思考。
《HeadFirstJava(中文版)(第2版)(涵蓋Java5.0)》的圖文並茂學習方式能讓你快速地在腦海中掌握住知識。敞開心胸准備好學習這些關鍵性的主題:Java程序語言;面向對象程序開發;Swing圖形化介面;使用JavaAPI函數庫;編寫、測試與部署應用程序;處理異常;多線程;網路程序設計;集合與泛型。
如果你想要看"一本正經"的書,去找其他的。如果你真地想要好好地學習Java,你會需要《Head First Java》。這本書可是Amazon編輯推薦的十大好書之一!強烈推薦學習此書,非常適合初學者入門。
2《Java從入門到精通》適合自學者
《Java從入門到精通》這本書主要針對java基礎,對於沒有學過java的人才說,是一個不錯的選擇。通過這本書,大家可以從零開始,慢慢來學習,而且實操很多,不會讓你看到最後出現只會理論的情況。為什麼說培訓的人不用看呢?因為這本書上的內容和許多培訓機構的書籍有很多重復的地方,所以參加培訓的同學就可以不看了。如果覺得自學太難太慢的話,那就報培訓機構吧.
3.《Thinking in java》(中文名:《Java編程思想》)適合中級自學者和培訓者
《Java編程思想》可以說是最經典的java著作,是所有java程序員必備教科書。這本書不管是正在學習還是已經工作許多年的程序員,都可以從這本書中得到你想要的東西。這本書具有教材和工具書的作用,就像一本字典,想知道什麼都可以從中查詢。雖然這本書很好,但並不建議初學者學習,對於初學者難度較大。
4.《瘋狂Java講義》適合自學者看
《瘋狂的講義》這本書比較適合自學者,內容比較項目化,實操方法很多,如果你想進行java的深入學習,不妨看看這本書。
《瘋狂Java講義(第5版)》深入介紹了Java編程的相關方面,全書內容覆蓋了Java的基本語法結構、Java的面向對象特徵、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC資料庫編程、Java注釋、Java的IO流體系、Java多線程編程、Java網路通信編程和Java反射機制。覆蓋了java.lang、java.util、java.text、http://java.io和java.nio、java.sql、java.awt、javax.swing包下絕大部分類和介面。本書重點介紹了Java的模塊化系統,還詳細介紹了Java 10、Java 11的使用var聲明局部變數、在Lambda表達式中使用var聲明變數、改進的javac命令、基於嵌套的訪問控制、HTTP Client網路編程,以及Java 10、Java 11新增的各種API功能。
5.《Java核心技術》最適合報培訓班的看
這本書分為兩個部分,第一個部分講的是基礎知識,第二個部分講的是高級特性。由於內容非常有層次,所以非常適合自學和上培訓機構的同學學習。尤其對參加培訓的同學作用較大,因為一般培訓機構講的非常快,有很多東西沒辦法及時消化吸收,很多基礎和核心的東西就會掌握的不牢固,那麼這本書正好彌補了這個缺失。
6.《Java開發實戰經典》適合自學者看
該書是一本綜合講解Java核心技術的書籍,在書中使用大量的代碼及案例進行知識點的分析與運用,並且給出一些比較成熟的開發步驟,幫助讀者更好地進行Java的開發。
從作者多年的Java培訓經驗來看,大部分學生對各種高端開發都沒有任何問題,唯一的問題在於Java基礎並不牢固,而且在國內也始終沒有一本真正可以引領讀者入門的好書籍,大部分的書籍都是圍繞概念本身進行講解的,沒有講解清楚為什麼要具備這些知識以及該如何去理解這些知識。本書真正地做到了讓每一位讀者都能清楚地知道每個知識點的來龍去脈,不僅可以很容易地看懂一個程序,而且能真正地靈活運用程序,編寫代碼。
在學習編程語言時,環境、代碼調試等,都是很多讀者最頭疼的地方,而且很多代碼都會存在一些細節上的問題,所以,本書為了讓讀者可以更好地理解每一個知識點,將書中所有內容都錄製成了視頻,讓每一位讀者真正做到"輕松學Java、從零開始學Java",以優質的視頻教學為每一位讀者提供最大的支持。
這本書比較適合自學者學習,裡面有很多小案例,可以邊學邊練,鞏固知識。

⑶ 零基礎學習Java的書籍有哪些,請推薦

主要分三階段來說:入門,進階程序員,攻城獅思維,每個階段推薦相關書籍:
java入門書籍推薦: 入門者最需要靜下心來系統化的學習知識,但同時也有很多可能與Java本身無關但很重要的疑問。
Head First Java(中文版)(第2版)
head first系列的教材,看起來都特別輕松,圖文並茂,簡單易懂,適合初學者選擇。缺點則是只介紹一些最基礎最實用的東西 知識點不夠豐富。
Java核心技術 第七版 卷Ⅰ(基礎知識)
統全面講解Java語言的核心概念、語法、重要特性和開發方法,包含大量案例,實踐性強,第1章概述了Java語言與其他程序設計語言不同的性能。
Java開發實戰經典
書中的代碼和案例較多,知識點也比較全面,在實際開發的過程中來講解一些基礎內容,對於新手而言很實用。
Thinking In Java 4(完美高清中文版)
Think in java被譽為「java聖經」。無論你處於什麼階段,每一次閱讀都能有所收獲。也因此,對於新手而言,這本書毀譽參半,自行斟酌吧。
———————————華麗分割線————————-——————

程序員進階篇:
這一階段的Java學習者處於高速成長期,需要不斷的獲取項目經驗、掌握更多開發知識。當然,最重要的還是為了成功拿到靠譜的offer。
《Effective Java中文版 第2版》
本書介紹了在java編程中78條極具實用價值的經驗規則,每條規則都以簡短、獨立的小文章形式出現,並通過例子代碼加以進一步說明,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。
Java並發編程實戰(中文版)
深入淺出地介紹了Java線程和並發,是一本完美的Java並發參考手冊。其中並非只講述了Java的多線程設施,對一般的並發編程的rationale也有相當透徹的闡述 測試驅動開發 by Example 書中不僅以案例的形式呈現了測試驅動開發的原則和方法,而且詳盡地闡述了測試驅動開發(TDD)的模式和最佳實踐。本書從始至終貫穿了兩個TDD項目,展示了如何輕而易舉且卓有成效地編寫優質代碼的技術。
現在很多小夥伴喜歡在互聯網上找視頻資料學習網頁製作,但是光看視頻你是不可能學會網頁製作的,沒有人指導你,而且很多視頻已經過時了 並沒有什麼用! 如果你真的想學習網頁製作這門技術,你可以來這個群,前面是6 5 7 ,中間是1三7,最後是九O六, 在這里有最新的HTML課程 免費學習 也有很多人指導你 進步 不需要你付出什麼 只要你有一顆學習的心就可以了 不是願意學習或者自認不需要學習的就不要加了。
重構_改善既有代碼的設計[高清版]
書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。本書提出的重構准則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。

——————————進階攻城獅———————————- ——————

java攻城獅推薦學習書籍:
這一階段的Java學習者已經漸入佳境,沉下心來研究技術點的同時,更多的是關於Java的思考。
企業應用架構模式(中文版)
作者將40多種經常出現的解決方案轉化成模式,最終寫成這本能夠應用於任何一種企業應用平台的、關於解決方案的、不可或缺的手冊。
敏捷開發-敏捷軟體開發:原則、模式與實踐(全)
好的技術書籍的標準是通俗易懂;文字精煉;耐讀,有吸引力;有思想性。作者的書寫功力有目共睹,而且他的技術修為也絕對無人質疑。因此他寫的這本書秉承了他一貫的優勢。符合所有好處所具備的條件。
《Java性能優化權威指南》
Java性能優化聖經!主要為Java SE 和Java EE 應用的性能調優提供建議。主要包括以下幾方面:性能監控、性能分析、Java HotSpot VM 調優、高效的基準測試以及Java EE 應用的性能調優。
學習過程中精品開發工具推薦:
JDK(Java開發工具包)、SparkJava、jClarity、Eclipse、NetBeans、JUnit.org、IntelliJ IDEA 13.1 以上都是本人收集的資料希望對你有所幫助。

⑷ 想學習java,初學者適合看什麼書呢

入門類

1.《java從入門到精通》(第3版)

【內容介紹】

本書從初學者角度出發,通過通俗易懂的語言、豐富多彩的實例,詳細介紹了使用Java語言進行程序開發應該掌握的各方面技術。全書共分28章,包括:初識Java,熟悉Eclipse開發工具,Java

語言基礎,流程式控制制,字元串,數組,類和對象,包裝類,數字處理類,介面、繼承與多態,類的高級特性,異常處理,Swing程序設計,集合類,I/O輸入輸出,反射,枚舉類型與泛型,多線程,網路通信,資料庫操作,Swing表格組件,Swing樹組件,Swing其他高級組件,高級布局管理器,高級事件處理,AWT繪圖與音頻播放,列印技術和企業進銷存管理系統等。所有知識都結合具體實例進行介紹,涉及的程序代碼給出了詳細的注釋,可以使讀者輕松領會Java程序開發的精髓,快速提高開發技能。

【推薦理由】

本書內容詳盡,實例豐富,非常適合作為編程初學者的學慣用書,也適合作為開發人員的查閱、參考資料。

2.《java核心技術卷一》

【內容介紹】

本書是Java技術經典參考書,多年暢銷不衰,第7版在保留以前版本風格的基礎上,涵蓋Java2開發平台標准版J2SE5.0的基礎知識,主要內容包括面各對象程序設計、反射與代理、介面與內部類、事件監聽器模型、使用SwingUI工具箱進行圖形用戶界面設計,異常處理、流輸入/輸出和對象序列化、泛型程序設計等。本書內容翔實、深入淺出,附有大量程序實例,極具實用價值,是Java初學者和Java程序員的必備參考書。

【推薦理由】

本書出版以來,深受廣大讀者的喜愛,它全面介紹了Java SE的基礎知識,不但具有使用價值,而且易於閱讀,易理解,它必成為想進軍Java和基礎薄弱同學的不二之選。

3.《java編程語言》

【內容介紹】

本書以Java語言創建者的獨特視角向讀者展現了為什麼以及如何使用Java語言,以便讀者理解Java語言的基本設計目標以及它在現實世界中的應用。

本書介紹的是Java語言的最新版本,該版本在《Java Language Specification,SecondEdition》中定義,在Java2SDK1.3標准版中實現。本書已是第三版,在經構上相對前兩版有所調整,重點講述了新的語言特徵,並提供了新API的使用實例。本書完全覆蓋了Java語言當前版本的特徵和類庫,可以作為Java語言的入門向導,也可作為高級Java開發及Java語言教學的參考用書。

進階類

1.《java編程思想》

【內容介紹】

本書共22章,包括操作符、控制執行流程、訪問許可權控制、復用類、多態、介面、通過異常處理錯誤、字元串、泛型、數組、容器深入研究、JavaI/O系統、枚舉類型、並發以及圖形化用戶界面等內容。這些豐富的內容,包含了Java語言基礎語法以及高級特性,適合各個層次的Java程序員閱讀,同時也是高等院校講授面向對象程序設計語言以及Java語言的絕佳教材和參考書。

【推薦理由】

本書贏得了全球程序員的廣泛贊譽,即使是最晦澀的概念,在BruceEckel的文字親和力和小而直接的編程示例面前也會化解於無形。從Java的基礎語法到最高級特性(深入的面向對象概念、多線程、自動項目構建、單元測試和調試等),本書都能逐步指導你輕松掌握。

2.《java核心技術卷二》

【內容介紹】

《JAVA核心技術卷2:高級特徵》是Java技術權威指南,全面覆蓋Java技術的高級主題,包括流與文件、XML、網路、資料庫編程、高級Swing、高級 AWT、JavaBean構件、安全、分布式對象、腳本、編譯與註解處理等,同時涉及本地化、國際化以及Java SE6的內容。《JAVA核心技術卷Ⅱ:高級特徵》對Java技術的闡述精確到位,敘述方式深入淺出,並包含大量示例,從而幫助讀者充分理解Java語言以及Java類庫的相關特性。

【推薦理由】

本書是經典的《Java核心技術,卷II:高級特性》的最新修訂版,涵蓋了JavaSE6平台的高級用戶界面程序設計和企業特性。與第1卷(涵蓋了核心的語言和類庫特性)一樣,本卷已經更新到了JavaSE6。並且對新內容都作了重點標注。書中所有的示常式序都進行了詳細的設計,用來演示最新的編程技術。並展示針對專業開發者在現實中所碰到的典型問題的最佳解決方案。本書包含有關StAXAPI、JDBC4、編譯器API、腳本框架、閃屏和托盤API以及其他許多JavaSE6改進特性的新章節。本書聚焦於Java語言中更高級的特性,包括下列內容:流與文件、網路、資料庫編程、XML、JNDI與LDAP、國際化、高級GUI組件、Java2D、JavaBeans、安全、RMI與Web服務、高級AWT、註解、本地方法。

3.《瘋狂java講義》

【內容介紹】

本書深入介紹了Java編程的相關方面,全書內容覆蓋了Java的基本語法結構、Java的面向對象特徵、Java集合框架體系、Java泛型、異常處理、JavaGUI編程、JDBC資料庫編程、Java注釋、Java的IO流體系、Java多線程編程、Java網路通信編程和Java反射機制。共覆蓋了java.awt、java.lang、http://java.io和java.nio、java.sql、java.text、java.util、javax.swing包下絕大部分類和介面。

【推薦理由】

本書並不單純從知識角度來講解Java,而是從解決問題的角度來介紹Java語言,所以本書中介紹了大量實用案例開發。這些案例既能讓讀者鞏固每章的知識,又可以讓讀者學以致用、激發編程自豪感,進而引爆內心的編程激情。本書光碟里包含書中所有示例的代碼,如果讀者希望獲得課後練習的程序代碼。

本書為所有打算深入掌握Java編程的讀者而編寫,適合各種層次的Java學習者和工作者閱讀,也適合作為大學教育、培訓機構的Java教材。但北大青鳥光谷校區專業老師認為,如果只是想簡單涉獵Java,則本書過於龐大,不適合閱讀。

JavaEE類

1.《javaWeb整合開發王者歸來》

【內容介紹】

本書全面介紹了Java Web開發中的各種相關技術及知識。全書分為9篇,內容層次清晰,難度循序漸進。第1篇為入門篇,內容包括JavaWeb開發概述等;第2篇為基礎篇,內容包括Servlet技術、JSP技術、會話跟蹤、過濾器Filter、監聽器Listener等;第3篇為高級篇,內容包括JSTL標簽庫的使用、如何自定義標簽、資源國際化、資料庫概述、JDBC詳解、XML概述等;第4篇為Struts框架篇,內容不僅包括Struts 1.x的內容,也包括Struts2.x中的內容;第5篇為Hibernate框架篇;第6篇為Spring框架篇;第7篇為EJB與Web服務篇,內容包括EJB3概述、JPA規范Web服務框架XFire等;第8篇為工具篇,內容包括在JavaWeb項目中常用的開源工具框架、主要有版本管理工具SVN、日誌工具commons-logging與Log4J、報表圖形引擎JFreeChart、PDF組件iText等;第9篇為實戰篇,內容為兩個典型的應用系統:論壇系統(Spring+Struts+Hibernate)、寵物商店(EJB3+JPA+Struts 2)。

【推薦理由】

資深Java程序員耗時一年時間寫作,十年開發經驗毫無保留。全面、系統、深入介紹Java Web開發的核心技術與主流框架。

2.《spring 入門到精通》

【內容介紹】

本書由淺入深,循序漸進地介紹了Spring的體系結構和相關知識點,目的是幫助初學者快速掌握Spring,並能使用Spring進行應用程序的開發。本書最大的特色在於每章都是由淺入深,從一個簡單的示例入手,讓讀者快速了解本章內容,然後再詳細講解本章涉及的基本原理和知識點,最後再通過一個詳細的示例宋鞏固所學內容。本書每一章的例子都是經過精挑細選,具有很強的針對性,力求讓讀者通過親自動手做而掌握其原理和方法,從而學習盡可能多的知識。本書適用於初、中級軟體開發人員,同時也可用作高校相關專業師生和社會培訓班的教材。

【推薦理由】

全書共分14章,內容涵蓋了Spring的基礎概念、核心容器、SpringAOP、事務處理、持久層封裝、Web框架、定時器、Spring和Struts、Spring和Hibernate、Spring和Ant、Spring和Junit。本書適用於初、中級軟體開發人員,同時也可用作高校相關專業師生和社會培訓班的教材。

3.《JavaWeb開發詳解》

【內容介紹】

本書共分4部分,從XML、Servlet、JSP和應用的角度向讀者展示了Java Web開發中各種技術的應用,循序漸進地引導讀者快速掌握Java Web開發。

【推薦理由】

本書內容全面,涵蓋了從事Java Web開發所應掌握的所有知識,在知識的講解上本書採用理論與實踐相結合的方式,從程序運行的內部機制進行分析講解,並通過大量的實例和實驗來驗證並運用本書的知識。

以上書籍資料希望對你有幫助,有其他問題可以留言!

⑸ 零基礎的人學java,看哪些書。。求推薦幾本書籍

《瘋狂java講義》 對於這本書,相信大家不陌生,《瘋狂講義》這本書深入介紹了java編程的相關方面,這本書的內容有Java基本語法結構、面向對象特徵、集合框架體系、 泛型、異常處理、GUI編程、JDBC資料庫編程、注釋、的IO流體系、多線程編程、網路通信編程、反射機制和java開發中需要的jar包、類和介面。

⑹ 做網路通信 JAVA開發的,主要要學習說明內容

1.IP地址與埠號
網路中的計算機若需要實現相互通信,必須為每台計算機指定標識號,通過標識號來指定接收數據和識別發送數據的計算機。TCP/IP協議中的「標識」即為IP地址。
一台計算機可同時運行多個網路程序,使用IP地址能夠將數據發送到計算機,卻不能保證將數據提交至哪個網路程序。因此每個被發送的網路數據包的頭部都設有「埠」部分,該部分為整數,用於表示將數據幀交給哪個應用程序進行處理。同時還必須為網路程序指定埠號,使不同的應用程序接收不同埠上的數據。
同一台計算機不能存在多個使用同一埠的程序。埠數的范圍在0-65535之間,其中在0-1023之間的埠號用於知名的網路服務和應用,1024以上的埠號用於普通應用程序,這樣做可以避免埠號代表的網路程序串用。

2.TCP與UDP
TCP為傳輸控制協議,UDP為用戶數據報協議。TCP是面向連接的通信協議,它提供兩台計算機之間可靠無差錯的數據傳輸。應用程序使用TCP進行通信時,數據源與目標之間將建立虛擬的連接,連接一旦建立,兩台計算機之間就可以將數據作為雙向位元組流進行交換。
UDP是無連接的通信協議,它不保證可靠數據的傳輸,但能夠實現向若干個目標發送數據的功能。

3.Socket簡介
Socket(套接字)是網路驅動層為應用程序提供的介面和機制,其作用可以看作是為應用程序創建的港口碼頭。

4.TCP網路編程概述
TCP協議具體操作步驟如下:
(1)伺服器程序創建ServerSocket對象,調用accept()方法等待客戶端連接。
(2)客戶端程序創建Socket對象與客戶端建立專線連接。
(3)伺服器接收客戶的連接請求,並創建新的Socket對象與客戶端建立專線連接。
(4)實現(2)、(3)步驟中建立連接的兩個Socket在同一線程上對話。
(5)伺服器重新等待新的連接請求。

5.ServerSocket類
TCP網路伺服器程序的編寫,需要使用ServerSocket類創建伺服器。
ServerSocket類的主要方法如下:
方法 類型 描述
public ServerSocket(int port) 構造方法 創建ServerSocket實例
public Socket accept() 方法 等待客戶端連接
public InetAddress getInetAddress() 方法 返回伺服器的IP地址
public boolean isClosed() 方法 返回ServerSocket的關閉狀態
public void close() 方法 關閉ServerSocket
伺服器端每次運行時均需調用accept()方法等待客戶端連接,該方法執行後服務端將進入阻塞狀態,直到客戶端再次連接。accept()方法的返回類型為Socket。

6.Socket類
客戶端必須創建Socket對象來建立與伺服器的連接,每個Socket對象代表一個客戶端。
Socket類的常用方法如下:
方法 類型 描述
public Socket(String host,int port) 構造方法 創建Socket對象,同時指定要連接伺服器的主機名和商品號
public InputStream getInputStream() 方法 返回套接字的輸入流
public OutputStream getOutputStream() 方法 返回套接字的輸出流
public boolean isClosed() 方法 返回套接字的關閉狀態
public void close() 方法 關閉此Socket

注意:TCP網路編程中的信息使用輸入輸出流的形式傳遞。

7.TCP伺服器程序
編寫TCP伺服器程序,代碼如下:
package com;
import java.net.*;
import java.io.*;
public class TcpServer{
public static void main(String []a){
ServerSocket server=null;
Socket socket=null;
BufferedReader in=null;
PrintWriter out=null;
try{
//伺服器在9000埠上監聽
server=new ServerSocket(9000);
//接收客戶端連接
socket=server.accept();
//得到客戶端輸入信息
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向客戶端輸出信息,true是自動刷新緩沖區
out=new PrintWriter(socket.getOutputStream(),true);
out.println("已建立與伺服器的連接");
String info=in.readLine();
System.out.println("客戶端的輸入是:"+info);
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
in.close();
out.close();
socket.close();
server.close();

}catch(Exception e){
e.printStackTrace();
}
}
}
}

為驗證伺服器端程序能否正常工作,程序還需提供客戶端程序與伺服器進行通信。Windows系統中的telnet程序是一個系統自帶的TCP客戶端,可以使用telnet來進行與伺服器端的通信測試。運行telnet時指定連接伺服器的IP地址和埠號,連接一旦建立,telnet程序窗口就可以將輸入內容發送至伺服器,同時,可以顯示從伺服器接收到的數據。測試步驟如下:
(1) 運行伺服器端程序
(2) 在DOS窗口中運行telnet 127.0.0.1 9000,由於伺服器端程序和客戶端程序在同一台機器上,所以可以使用127.0.0.1代表本機。

註:調用一次accept()方法只能接受一個連接,接受多個連接需要將該方法放在循環語句中,同時每個連接的數據的數據輸入輸出也應放在一個循環語句中,才能實現伺服器端與客戶端的持續交換。
class Service implements Runnable{
Socket socket=null;
BufferedReader in=null;
PrintWriter out=null;
public Service(Socket socket){
this.socket=socket;
}

public void run(){
//得到客戶端輸入信息
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向客戶端輸出信息,true是自動刷新緩沖區
out=new PrintWriter(socket.getOutputStream(),true);
//循環讀取客戶端數據並向客戶端寫入數據
while(true){
out.println("已建立與伺服器的連接");
System.out.println("客戶端說:"+in.readLine());
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
in.close();
out.close();
socket.close();
server.close();

}catch(Exception e){
e.printStackTrace();
}
}
}
}

public class TcpServer{
ServerSocket server=null;
Socket socket=null;
try{
//伺服器在9000埠上監聽
server=new ServerSocket(9000);
//接收多個客戶端連接
while(true){
socket=server.accept();
new Thread(new Service(socket)).start();
}catch(Exception e){
e.printStackTrace();

}
}
}

8.TCP客戶端程序
package com;
import java.net.*;
import java.io.*;
public class TcpClient{
public static void main(String []a){
ServerSocket server=null;
Socket socket=null;
BufferedReader in=null;
BufferedReader input=null;
PrintWriter out=null;
try{
socket=new Socket("127.0.0.1",9000);
while(true){
input=new BufferedReader(new InputStreamReader(System.in);
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
}

//向伺服器端輸出信息,true是自動刷新緩沖區
out=new PrintWriter(socket.getOutputStream(),true);
out.println("客戶端說:"+input.readLine);
String info=in.readLine();
System.out.println("伺服器說:"+info);
}catch(Exception e){
e.printStackTrace();
}
}
}

9.UDP網路編程
(1)DatagramSocket類主要用於實現信息的發送和接收。
DatagramSocket類的主要方法:
方法 類型 描述
public DatagramSocket() 構造方法 構造DatagramSocket對象不指定監聽埠
public DatagramSocket(int port) 構造方法 構造DatagramSocket對象指定監聽埠
public void send(DatagramPacket p) 方法 發送數據報
public void receive(DatagramPacket p) 方法 接收數據報

(2)DatagramPacket類
DatagramPacket類用於包裝一條要發送或接收的信息,發送數據和接收數據都需要構建DatagramPacket對象。
DatagramPacket類的主要方法:
方法 類型 描述
public DatagramPacket(byte[] buf,in length) 構造方法 構造DatagramPacket對象時指定內存空間和大小
public DatagramPacket(byte[] buf,in length,InetAddress address,int port) 同上
public byte[] getData() 方法 返回接收數據
public int getLength() 方法 返回發送或接收數據的長度
public InetAddress getAddress() 方法 返回機器的地址

(3)InetAddress類
InetAddress類用於表示計算機地址,主要方法如下:
方法 類型 描述
public static InetAddress getByName(String host) 方法 通過主機名或IP地址獲得一個InetAddress對象
public String getHostName() 方法 獲得IP地址對應的主機名
public String getHostAddress() 方法 返回IP地址字元串

10. UDP程序設計
編寫UDP網路程序需要分別編寫發送程序和接收程序
(1)發送程序
package com;
import java.net.*;
public class UdpSend{
public static void main(String [] a){
DatagramSocket ds=null;
DatagramPacket dp=null;
byte[] buf=new byte[1024];
try{
//DatagramSocket類用於完成消息的發送
ds=new DatagramSocket();
String info="hello world";
dp=new DatagramPacket(info.getBytes(),info.length,InetAddress.getByName("localhost"),3000);
//發送數據包
ds.send(dp);
}catch(Exception e){
e.printStackTrace();
}
finally
{
ds.close(); //消息發送完畢,關閉對象
}
}
}

(2)接收程序
package com;
import java.net.*;
public class UdpRecv{
public static void main(String [] a){
DatagramSocket ds=null;
DatagramPacket dp=null;
byte[] buf=new byte[1024];
try{
//DatagramSocket類用於完成消息的發送
ds=new DatagramSocket();
dp=new DatagramPacket(buf,1024);
//接收發送方發送的數據
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
str=str+" from "+dp.getAddress.getHostAddress();
System.out.println(str);
}catch(Exception e){
e.printStackTrace();
}
finally
{
ds.close(); //消息發送完畢,關閉對象
}
}
}

閱讀全文

與java網路通信編程教材相關的資料

熱點內容
怎麼弄微信在區域內廣告發布平台 瀏覽:158
svnhtpasswd修改密碼 瀏覽:925
如何關閉win10快捷鍵設置 瀏覽:571
javadoc導出 瀏覽:221
蘋果有沒有種子搜索器 瀏覽:17
u盤怎麼注冊文件夾 瀏覽:151
c盤可以刪除哪個文件夾 瀏覽:871
java手機版編程軟體 瀏覽:606
如何加速訪問國外伺服器的網站 瀏覽:194
體系文件優化應該哪個部門負責 瀏覽:893
球球app換成什麼了 瀏覽:974
flm文件名 瀏覽:48
dota怎麼調全屏win10 瀏覽:826
中國區縣資料庫 瀏覽:676
excel怎麼把文件導入到表格上 瀏覽:754
河北省委文件PDF 瀏覽:482
數據線怎麼變軟 瀏覽:949
java做app需要學什麼 瀏覽:736
圖元文件怎樣插入word 瀏覽:346
word表格消除粘貼的表格背景色 瀏覽:438

友情鏈接