導航:首頁 > 編程語言 > java網路編程筆記

java網路編程筆記

發布時間:2023-03-20 22:48:58

java網路編程的目錄

第一章 Java網路編程的原因
網路程序的功能
安全性
等等!還有更多!
第二章 基本網路概念
網路
網路的分層
IP、TCP和UDP
Internet
客戶/伺服器模型
Internet標准
第三章 基本Web概念
URI
HTML、SGML和XML
HTTP
MIME媒體類型
伺服器端程序
第四章 流
輸出流
輸人流
過濾器流
閱讀器和書寫器
第五章 線程
運行線程
返回線程中的信息
同步
死鎖
線程調度
線程池
第六章 查找Internet地址
InetAddress類
Inet4Address和Inet6Address
NetworkInterface類
一些有用的程序
第七章 U R L和U R I
URL類
URLEncoder和URLDecoder類
URI類
代理
通過GET方法與伺服器端程序通信
訪問受口令保護的網站
第八章 Swing中的HTM L
組件上的HTML
JEditorPane
解析HTML
coOkie一
第九章 客戶端Socket
socket基礎
用Telnet研究協議
Socket類
Socket異常
Socket地址
示例
第十章 伺服器socket
ServerSocket類
一些有用的伺服器
第十一章安全Socket
保護通信
創建安全客戶端socket
SsLSocket類的方法
創建安全的伺服器socket
SSLSerVerSocket類的方法
第十二章 非阻塞I/O。
一個示例客戶端
一個示例伺服器
緩沖區
通道
就緒選擇
第十三章 UDP數據報和Socket
UDP協議
DatagramPacket類
DatagramSocket類
一些有用的應用程序
DatagramChannel
第十四章 組播socket
何為組播socket?
使用組播socket
兩個簡單示例
第十五章 URLConnection
打開URLConnection
讀取伺服器的數據
讀取首部
配置連接
配置客戶端的請求HTTP首部
向伺服器寫入數據
內容處理器
0bject方法
URLConnection的安全考慮
猜測MIME內容類型
HttpURLCOnnectiOn
緩存
JarURLCOnnectiOn
第十六章 協議處理器
何為協議處理器7
URLStreamHandler類
編寫協議處理器
更多協議處理器示例和技術
URLStreamHandlerFactory介面
第十七章 內容處理器
何為內容處理器7
ContentHandler類
ContentHandlerFactory介面
FITS圖片格式的內容處理器
第十八 章遠程方法調用
何為遠程方法調用7
實現
在運行時載入類
java rmi包
jaVarmiregistry包
javarmiserver包
第十九章 JavaMailAPI
何為JavaMail API?
發送電子郵件一
接收郵件
口令認證
地址一
URLName類
Message類
Part介面
多部分消息和附件
MIME消息
文件夾
……

⑵ (一)Java多線程 (二)輸入輸出流 (三)Java網路編程 (四)Java資料庫編程

(1)多線程我感覺你應該知道首先實現線程類的兩個方法。一個是繼承Thread類.另一個是實現Runnable介面.然後怎樣啟動一個線程類。還有就是實現的兩種方法的區別。例如資源是不是能共享呀等等。
(2)對於輸入輸出流.你首先要明白任何輸出流輸入流都是繼承自OutputStream InputStream 還有Writer Reader。說得簡單一點所有字元流的祖先都是(Writer或者Reader)而所有位元組流的祖先都是
(OutputStream 或者InputStream)其中你還要明白字元和位元組的區別。最後以上所有的祖先都是抽象的。所以要實現都是通過多態來實現的。用父類的引用指用子類的實例。
(3)Java網路編程這個就不好說了。全得平時的理解加上網路課的學習
(4)java資料庫編程這個比較重要。首先你得知道。常用的資料庫有那些。然後怎樣讓java程序與資料庫連接起來。一般採用都是thin(對於oracle)然後。你得記住那些很固定的格式。例如什麼驅動的字元呀。還有就是url呀。等等各個資料庫是不一樣的。例如oralce你要載入驅動你得用Class.forName("oracle.jdbc.driver.OracleDriver");其中裡面的那個格式每個資料庫都不一樣。最後你得知道怎樣從資料庫裡面查詢一個你想要的結果。然後怎樣能過程序得到這個結果。這就是jdbc里提供的一些方法了。例如像什麼ResulSet對象呀。等等。總之多多練習就能了解的。

⑶ Java網路編程從入門到精通(4):DNS緩存

在通過DNS查找域名的過程中 可能會經過多台中間DNS伺服器才能找到指定的域名 因此 在DNS伺服器上查找域名是非常昂貴的操作 在Java中為了緩解這個問題 提供了DNS緩存 當InetAddress類第一次使用某個域名(如)創建InetAddress對象後 JVM就會將這個域名和它從DNS上獲得的信息(如IP地址)都保存在DNS緩存中 當下一次InetAddress類再使用這個域名時 就直接從DNS緩存里獲得所需的信息 而無需再訪問DNS伺服器

DNS緩存在默認時將永遠保留曾經訪問過的域名信息 但我們可以修改這個默認值 一般有兩種方法可以修改這個默認值

在程序中通過java security Security setProperty方法設置安全屬性nel的值(單位 秒) 如下面的代碼將緩存超時設為 秒

java security Security setProperty( nel );

設置java security文件中的neorkaddresl屬性 假設JDK的安裝目錄是C jdk 那麼java security文件位於c jdk jrelibsecurity目錄中 打開這個文件 找到nel屬性 並將這個屬性值設為相應的緩存超時(單位 秒)

如果將nel屬性值設為 那麼DNS緩存數據將永遠不會釋放 下面的代碼演示了使用和不使用DNS緩存所產生效果

package mynet;import *;publicclass MyDNS{publicstaticvoidmain(String[]args)throwsException{//args[ ]:本機名args[ ] 緩沖時間if(args length< )return;java security Security setProperty( nel args[ ]);longtime=System currentTimeMillis();InetAddressaddresses []=InetAddress getAllByName(args[ ]);System out println( addresses : +String valueOf(System currentTimeMillis() time)+ 毫秒 );for(InetAddressaddress:addresses )System out println(address);System out print( 按任意鍵繼續 );System in read();time=System currentTimeMillis();InetAddressaddresses []=InetAddress getAllByName(args[ ]);System out println( addresses : +String valueOf(System currentTimeMillis() time)+ 毫秒 );for(InetAddressaddress:addresses )System out println(address);}}

在上面的代碼中設置了DNS緩存超時(通過args[ ]參數) 用戶可以通過命令行參數將這個值傳入MyDNS中 這個程序首先使用getAllByName建立一個InetAddress數組 然後通過System in read使程序暫停 當用戶等待一段時間後 可以按任意鍵繼續 並使用同一個域名(args[ ])再建立一個InetAddress數組 如果用戶等待的這段時間比DNS緩存超時小 那麼無論情況如何變化 addresses 和addresses 數組中的元素是一樣的 並且創建addresses 數組所花費的時間一般為 毫秒(小於 毫秒後 Java無法獲得更精確的時間)

測試

執行如下命令(將DNS緩存超時設為 秒)

java mynet MyDNS

運行結果 (在 秒之內按任意鍵)

addresses : 毫秒/ 按任意鍵繼續addresses : 毫秒/

運行結果 (在 秒後按任意鍵)

addresses : 毫秒/ 按任意鍵繼續addresses : 毫秒/

在上面的測試中可能出現兩個運行結果 如果在出現 按任意鍵繼續… 後 在 秒之內按任意鍵繼續後 就會得到運行結果 從這個結果可以看出 addresses 所用的時間為 毫秒 也就是說 addresses 並未真正訪問DNS伺服器 而是直接從內存中的DNS緩存得到的數據 當在 秒後按任意鍵繼續後 就會得到運行結果 這時 內存中的DNS緩存中的數據已經釋放 所以addresses 還得再訪問DNS伺服器 因此 addresses 的時間是 毫秒(addresses 和addresses 後面的毫秒數可能在不同的環境下的值不一樣 但一般情況下 運行結果 的addresses 的值為 或是一個接近 的數 如 運行結果 的addresses 的值一般會和addresses 的值很接近 或是一個遠比 大的數 如 )

測試

執行如下命令(ComputerName為本機的計算機名 DNS緩存超時設為永不過期[ ])

java mynet MyDNS ComputerName

運行結果(按任意鍵繼續之前 將 刪除)

addresses : 毫秒myuniverse/ myuniverse/ 按任意鍵繼續addresses : 毫秒myuniverse/ myuniverse/

從上面的測試可以看出 將DNS緩存設為永不過期後 無論過多少時間 按任意鍵後 addresses 任然得到了兩個IP地址( 和 ) 而且addresses 的時間是 毫秒 但在這時 已經被刪除 因此可以判斷 addresses 是從DNS緩存中得到的數據 如果運行如下的命令 並在 秒後按任意鍵繼續後 addresses 就會只剩下一個IP地址( )

java mynet MyDNS ComputerName

如果域名在DNS伺服器上不存在 那麼客戶端在進行一段時間的嘗試後(平均為 秒) 就會拋出一個UnknownHostException異常 為了讓下一次訪問這個域名時不再等待 DNS緩存將這個錯誤信息也保存了起來 也就是說 只有第一次訪問錯誤域名時才進行 稱左右的嘗試 以後再訪問這個域名時將直接拋出UnknownHostException異常 而無需再等待 秒鍾

訪問域名失敗的原因可能是這個域名真的不存在 也可能是因為DNS伺服器或是其他的硬體或軟體的臨時故障 因此 一般不能將這個域名錯誤信息一直保留 在Java中可以通過neorkaddresl屬性設置保留這些信息的時間 這個屬性的默認值是 秒 它也可以通過java security Security setProperty方法或java security文件來設置 下面的代碼演示了neorkaddresl屬性的用法

package mynet;import *;publicclass MyDNS {publicstaticvoidmain(String[]args)throwsException{java security Security setProperty( neorkaddresl );longtime= ;try{time=System currentTimeMillis();InetAddress getByName( );}catch(Exceptione){System out println( 不存在!address : +String valueOf(System currentTimeMillis() time)+ 毫秒 );}//Thread sleep( );//延遲 秒try{time=System currentTimeMillis();InetAddress getByName( );}catch(Exceptione){System out println( 不存在!address : +String valueOf(System currentTimeMillis() time)+ 毫秒 );}}}

在上面的代碼中將neorkaddresl屬性值設為 秒 這個程序分別測試了address 和address 訪問(這是個不存在的域名 讀者可以將其換成任何不存在的域名)後 用了多長時間拋出UnknownHostException異常

運行結果

不存在!address : 毫秒不存在!address : 毫秒

我們從上面的運行結果可以看出 address 使用了 毫秒就拋出了異常 因此 可以斷定address 是從DNS緩存里獲得了域名不可訪問的信息 所以就直接拋出了UnknowHostException異常 如果將上面代碼中的延遲代碼的注釋去掉 那麼可能得到如下的運行結果

不存在!address : 毫秒不存在!address : 毫秒

從上面的運行結果可以看出 在第 秒時 DNS緩存中的數據已經被釋放 因此 address 仍需要訪問DNS伺服器才能知道是不可訪問的域名

在使用DNS緩存時有兩點需要注意

可以根據實際情況來設置nel屬性的值 一般將這個屬性的值設為 但如果訪問的是動態映射的域名(如使用動態域名服務將域名映射成ADSL的動態IP) 就可能產生IP地址變化後 客戶端得到的還是原來的IP地址的情況

lishixin/Article/program/Java/hx/201311/11147

⑷ JAVA網路編程

java的大方向就是j2ee
j2ee不僅僅是socket編程,具體包括13中核心技術。

J2EE的核心API與組件

J2EE平台由一整套服務(Services)、應用程序介面(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的13種技術規范進行簡單的描述(限於篇幅,這里只能進行簡單的描述):

1. JDBC(Java Database Connectivity):
JDBC API為訪問不同的資料庫提供了一種統一的途徑,象ODBC一樣,JDBC對開發者屏蔽了一些細節問題,另外,JDCB對資料庫的訪問也具有平台無關性。

2. JNDI(Java Name and Directory Interface):
JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操作企業級的資源如DNS和LDAP,本地文件系統,或應用伺服器中的對象。

3. EJB(Enterprise JavaBean):
J2EE技術之所以贏得媒體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發和實施分布式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度復雜的企業級應用的開發。EJB規范定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩沖池以及容錯性。但這里值得注意的是,EJB並不是實現J2EE的唯一途徑。正是由於J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。

4. RMI(Remote Method Invoke):
正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和伺服器端傳遞數據。RMI是一種被EJB使用的更底層的協議。

5. Java IDL/CORBA:
在Java IDL的支持下,開發人員可以將Java和CORBA集成在一起。他們可以創建Java對象並使之可在CORBA ORB中展開, 或者他們還可以創建Java類並作為和其它ORB一起展開的CORBA對象的客戶。後一種方法提供了另外一種途徑,通過它Java可以被用於將你的新的應用和舊的系統相集成。

6. JSP(Java Server Pages):
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。伺服器在頁面被客戶端所請求以後對這些Java代碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。

7. Java Servlet:
Servlet是一種小型的Java程序,它擴展了Web伺服器的功能。作為一種伺服器端的應用,當被請求時開始執行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成並且生成HTML。

8. XML(Extensible Markup Language):
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數據。
XML的發展和Java是相互獨立的,但是,它和Java具有的相同目標正是平台獨立性。通過將Java和XML的組合,您可以得到一個完美的具有平台獨立性的解決方案。

9. JMS(Java Message Service):
MS是用於和面向消息的中間件相互通信的應用程序介面(API)。它既支持點對點的域,有支持發布/訂閱(publish/subscribe)類型的域,並且提供對下列類型的支持:經認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另
一種方式來對您的應用與舊的後台系統相集成。

10. JTA(Java Transaction Architecture):
JTA定義了一種標準的API,應用系統由此可以訪問各種事務監控。

11. JTS(Java Transaction Service):
JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規范,並且在較底層實現OMG OTS specification的Java映像。JTS事務管理器為應用伺服器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。

12. JavaMail:
JavaMail是用於存取郵件伺服器的API,它提供了一套郵件伺服器的抽象類。不僅支持SMTP伺服器,也支持IMAP伺服器。

13. JAF(JavaBeans Activation Framework):
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的位元組流可以被轉換成Java對象,或者轉換自Java對象。大多數應用都可以不需要直接使用JAF。

第一個階段(java基礎階段)

1.java語法
2.面向對象
3.常用的api
4.界面編程
5.多線程
6.文件io
7.java網路編程..

看看 張孝祥老師的 java視頻 (不過張孝
祥老師普通話不是很好,而且語速很慢,不過技術是不用說的啦!感謝張老師的無私奉獻了,呵呵)

第二個階段 (資料庫階段)

1.oracle
2.mysql
3.sql server
目前中國軟體公司用的最多的三大主流資料庫是sql server,mysql ,oracle .目前看來oracle資料庫越來越流行了。一般情況下PHP對應MySQL資料庫;ASP對應SQL資料庫;JSP對應ORACLE資料庫。所以大家會經常看
到市場上JAVA培訓都是用的ORACLE資料庫,其實你學會了ORACLE資料庫,再去學習MySQL、SQL數 據庫,你會覺得有很多相似的之處,學起來也容易上手了。oracle我推薦
韓順平老師 oracle視頻 (韓老師授課很有趣,特適合基礎不太好的人。講課有一套)

第三個階段 (web開發階段)

1.html
2.css
3.javascript

這三個部分是進行web開發的必須技術.一定要好好學習.不過我當時沒有發現有講的特別好的。好像很多老師都講框架和後台,界面這塊不多,所以就沒有什麼好推薦的了,大家可以
在網上找找看看,<<別具光芒>> 這本書講的挺好,不過不太適合初學者,可以看看孫鑫老師視頻的《HTML語言速成》。

第四個階段 (j2ee 中級部分)
1.servlet
2.jsp
3.mvc

這個階段是接近企業的需求了,所以學習起來,難度偏大,如果前面沒有學習扎實,會比較麻煩,我就是這樣的,前面沒有吃透,就學習j2ee 中級,搞得我消化不良。所以小弟我中心的告誡大家,把前面的學好,再學習第四個階段,這里的mvc思想不太好理解,是學習的重點。同時要學習tomcat/jboss/wl 這些伺服器所以,你可能感到要學習的東西一下多了很多,其實我就在這里動搖過,有那麼一段時間,又想放棄了。可是一想到 房東那種不屑的表情,我就想,一定要好好學習,混出個人樣來。我家是農村的,回去就是種地,當公務員我沒有關系,再說會老家我學習的專業也用不上,要不就是當個網管什麼的,不說了,反正當時心情很復雜吧。這個階段我推薦
韓順平老師 servlet視頻 jsp視頻 (這里也特別謝謝韓順平老師,我是比較喜歡他講課的風格,因為我當時基礎不好,所以不敢看講的太理論的課。)

第五個階段 (j2ee 高級部分)

1.struts
2.hibernate
3.spring

學習完Servlet、JSP然後再去學習框架Struts、Hibernate、Spring等最前沿的最流行的網路編程必備的軟體技能。
推薦的參考書籍是美河圖書提供《Servlet與JSP核心編程》
框架的基礎就是Servlet、JSP。首先大家應該學習的是Struts框架,典型的MVC模型。推薦學習視頻是 張小靜的Struts視頻。(網上有孫鑫的視頻嘛,主要就是講的Struts、Hibernate、Spring這三個框架,但是這個好像是偷錄的效果不好,聽起來比較吃力,銜接的不好)
推薦書籍孫衛琴編著《精通Struts基於MVC的Java.Web設計與開發》

然後就是Hibernate框架,推薦李興華老師的Hibernate視頻,
參考書籍孫衛琴 《精通Java對象持久化技術詳解》

最後關於Spring框架的視頻,在網上你可以搜索到很多,但是系統講解的真的沒有發現,本著對大家負責的態度,不敢亂推薦,大家到網上搜一下,也許現在有了也可能。

學完上述三個階段的內容,就在看看xml,ajax,ejb這些知識!尤其是的Ajax用得非常火,我們公司就用,ajax的框架流行的是(jquery,dw),我們公司用的是jquery.這里提一 下,學習Ajax之前一定要有JavaScript的基礎,推薦視頻張孝祥JavaScript網頁開發,這套視頻有相應 的配套書籍《JavaScript網頁開發》

⑸ java網路編程基礎知識

java基礎是必須要會的。
網路編程這部分其實沒什麼東西,對於線程和並發方面要求的高一些。
對於一些簡單應用來說,如果基礎好的話看兩個星期的書,做點聯系就可以了。JAVA給提供了一套API,針對於TCP和UDP協議來操作,另外有關IO方面要了解。
如果研究深了的話就復雜了。各種協議的實現、系統底層操作等等很復雜,我也說不太明白,一步步來吧。
JAVA語言程序設計這本書里有關於網路編程的知識,還有習題和例子,挺好。

⑹ 我在學java初級,網路編程這一章。覺得像這種代碼和方法好難記住啊怎麼記啊全部背下來嗎

結論

我覺得學編程,寫項目沒有必要去背代碼,除非你是為了面試,那就可以稍微背一下。你可以先了解網路編程相關的函數大概了解它們的作用,然後去一些代碼開源網站找一些java網路編程相關的項目,然後你嘗試去模仿它,這樣的話,你的編程能力可能就會進步得快一點。

具體操作

  1. 在以下網站中進行相關網路編程函數的查詢學習。

https://www.runoob.com/java/java-networking.html

裡面也有相關例子的講解。

    ⑺ java socket網路編程

    //==============Server.java=================//
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class Server {
    public static void main(String[] args) throws IOException {
    ServerSocket s = new ServerSocket(12345);
    System.out.println("伺服器就緒,請啟動客戶端.");
    Socket so = s.accept();
    byte[] buff = new byte[1024];
    int read = so.getInputStream().read(buff);
    String[] abc=new String(buff,0,read).split("\\D+");
    int a = Integer.parseInt(abc[0]);
    int b = Integer.parseInt(abc[1]);
    int c = Integer.parseInt(abc[2]);
    if(!cbt(a,b,c))
    so.getOutputStream().write("輸入的數據無法組成三角形.".getBytes());
    else
    so.getOutputStream().write(getArea(a,b,c).getBytes());
    so.getOutputStream().flush();
    so.close();
    s.close();
    }

    private static String getArea(int a, int b, int c) {
    float s = (a+b+c)/2f;
    return "面積: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
    }

    private static boolean cbt(int a, int b, int c) {
    return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
    }
    }

    //=================Client.java======================//
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    public class Client {
    public static void main(String[] args) throws UnknownHostException, IOException {
    System.out.println("輸入三角形的三邊並用逗號隔開,如: (3,4,5) ");
    byte[] buff=new byte[64];
    int r = System.in.read(buff);
    String ipaddr = "localhost";//根據情況改變,在本機調試就不改了
    Socket so = new Socket(ipaddr,12345);
    so.getOutputStream().write(new String(buff,0,r).getBytes());
    r = so.getInputStream().read(buff);
    so.close();
    String rs = new String(buff,0,r);
    System.out.println(rs);
    }

    }

    //先啟動Server,再啟動Client

    閱讀全文

    與java網路編程筆記相關的資料

    熱點內容
    阿文是哪部電影的人物 瀏覽:662
    閔度允演坐輪椅的電影 瀏覽:913
    全國新增命令 瀏覽:192
    安卓如何恢復蘋果設置 瀏覽:859
    盛勢txt 瀏覽:769
    兩只狼老大和一個小嬰兒是什麼電影 瀏覽:433
    三洋帝度冰箱壓縮機 瀏覽:297
    多義線命令 瀏覽:48
    小說免費網站有哪些 瀏覽:466
    外國太空歷險的兒童片 瀏覽:693
    韓國《貪欲之島》女主角 瀏覽:582
    一個西方電影講述變異 瀏覽:312
    女大學生的沙龍室女演員 瀏覽:738
    歐美大片網站 瀏覽:924
    周星馳電影七仔小女孩叫什麼 瀏覽:75
    印度電影講一男一女在兩輛汽車窗戶上寫字留言 瀏覽:469
    ck236編程 瀏覽:392
    芭比大電影35部大全公主名字 瀏覽:429
    九叔世界酒泉鎮安妮 瀏覽:302
    榮耀新手機開機怎麼那麼多app 瀏覽:535