Java基础复习笔记系列 九 网络编程
Java基礎復習筆記系列之?網絡編程
?
學習資料參考:
1、http://www.icoolxue.com/
2、
?
1、網絡編程的基礎概念。
TCP/IP協議;Socket編程;IP地址。
中國和美國之間,海底光纜是如何橫跨太平洋的。“所謂的鋪設,就是直接扔進海里,只不過再扔之前需要勘探光纜經過的地區的年水流數據,海域水深等情況,基本都是扔在水比較淺且水流平穩的地區。”目前,同樣有衛星無線通信。
網絡通信的協議約束;通信協議的分層思想(編程的時候,無需了解光纜,還是寬帶);
在網絡編程中,有兩個問題:1.如何準確的定位網絡上的一臺或多臺主機。2.如何在兩個主機之間進行高效可靠的傳輸。
兩個主機要互相通信:1.要知道雙方的IP地址。2.要遵循一定的規則。(OSI和TCP/IP)事實上國際標準采用了:TCP/IP。事實上的標準,不是國際定義的標準,是在編程中實際運用的,在網絡中跑的就是這一套規則。他們分了四層:網絡接口層、IP層、傳輸層、應用層。
運輸層,主要有:TCP/IP協議和UDP協議。TCP/IP協議:進程(兩個應用程序)之間進行通信時,建立連接,通信,釋放連接。UDP協議:進程之間不必先建立連接,也就不需要釋放連接,故而減少了開銷和時延。(QQ聊天需要少開銷;游戲同步需要避免時延)
域名和IP地址。域名/IP地址:http://www.hp.com / 15.240.238.60.DNS負責將域名轉換為IP地址。在java.net.*包中,有類InetAddress,它的.getHostName()和.getHostAddress()可以實現域名和IP地址的對應轉換。
兩個Java應用程序通過一個雙向的通信鏈路連接,實現數據交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現Client-Server的連接。在Java.net.*;包中定義了兩個類,Socket類和ServerSocket類,其分別用來實現雙向連接的Client和Server端。建立連接時,所需的尋址信息為遠程計算機的IP地址和端口號。我們這些是基于TCP的。
一臺機器上最多有:65536個端口號。如果一個端口號代表一個應用程序的話,可以有65536個端口。1024是一個分界線;1~1023都是為系統保留的。如:http://www.google.com:80 代表了端口號80.TCP端口有65536個,UDP端口同樣也有65536個,TCP的8080和UDP的8080是不一樣的。我們上面說的都是Servlet端上的。。。Client上的端口是OS隨機分配的。
我們日常QQ語音通訊中的雜音等問題,是由于UDP這個無連接協議來決定的。
2、InetAddress類代碼練習。
import java.net.*;public class TestNet {public static void main(String args[]){ InetAddress address; try { address = InetAddress.getByName("www.hp.com"); System.out.println(address.toString()); System.out.println(address.getHostName()); System.out.println(address.getHostAddress()); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }如上,我們通過.getHostName()和.getHostAddress()方法,輕松的實現了域名和IP地址的映射。Java號稱是Internet上的語言,它對很多網絡中的東西做了封裝好的類,提供了很多的便捷。
3、ServerSocket和 。
服務器端時刻不停的運行,等待著客戶端的連接。所以服務器端的進程是阻塞似的。
4、同時在elcipse運行服務端程序和客戶端程序。
參考地址:http://www.oseye.net/user/kevin/blog/280
Eclipse中多個console的使用:
在Eclipse中開了兩個console,但是他們的操作總是同步的。不能搞在同一個項目中,Server端和Client端要在兩個JavaProject中,要分開來的。
5、
總結
以上是生活随笔為你收集整理的Java基础复习笔记系列 九 网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欢迎访问github地址,并指出项目中的
- 下一篇: Lucene实战(第2版)》