osi參考模型
tcp/ip參考模型
學的網絡程式設計主要在應用層(我想android、javaweb、qq、夢幻西遊等吧,估計是)、傳輸層和網際層混,每個層都有自己的協定規則。
傳輸層主要用tcp(同步;面向連接配接,資料量大)、udp(異步;面向無連接配接,大小限制在64k内,qq聊天、網絡視訊用的udp)
網際層主要用ip協定
應用層協定:http
ip位址:辨別網絡上的電腦的,相當于給電腦取個唯一的名字 192.168.1.1,最大隻能設定255這是位元組的最大數,(8個1的二進制轉10進制得出的)
127.0.0.1本地回環位址。ip位址資料太多也難記,是以取了名字127.0.0.1 = localhost
ip/v6不ip/v4的組合數更大,ip/6還包含字元
端口号‘:用來辨別電腦上的網絡應用程式的,(為什麼a同學,通過qq用網絡發個資訊給b同學,然後b同學隻能用qq接受,而不能用飛秋或其他程式接收呢?或者a同學的qq怎麼準确的發給了b同學的qq上了呢?這就是端口展現的作用了。)
0-1024端口,一般留給系統用,有0-65535個端口
傳輸協定:通訊的規則。(就像a同學用英文,而b同學用中文,他們兩能交流嗎?)是以網絡上的2台電腦要通信就要用同一個規則。
國際組織定義了通用的協定是tcp/ip協定,也是我們最常用的。它能用于廣域網也能用于區域網路。也還有其他的協定。特有的組織或機關有自己特有的通信協定。
使用最頻繁的三個方法:connect、getinputstream、getoutputstream
通信的兩端都有socket、網絡通信其實就是socket間的通信、資料在2個socket之間通過io流傳輸。
套接字,使應用程式能夠讀寫與收發通訊協定(protocol)與資料的程式 。(邏輯上的插座)
建立發送端,接收端
建立資料包
調用socket的發送接收方法
關閉socket。
發送端與接收端是兩個獨立的運作程式。(類比于服務端和用戶端)
此類表示用來發送和接收資料報包的套接字。
資料報套接字是包投遞服務的發送或接收點。每個在資料報套接字上發送或接收的包都是單獨編址和路由的。從一台機器發送到另一台機器的多個包可能選擇不同的路由,也可能按不同的順序到達。
在 datagramsocket 上總是啟用 udp 廣播發送。為了接收廣播包,應該将 datagramsocket 綁定到通配符位址。在某些實作中,将 datagramsocket 綁定到一個更加具體的位址時廣播包也可以被接收。
示例:<code>datagramsocket s = new datagramsocket(null);</code>
<code> s.bind(new inetsocketaddress(8888));</code>
<code></code> 這等價于:<code>datagramsocket s = new datagramsocket(8888);</code> 兩個例子都能建立能夠在 udp 8888 端口上接收廣播的 datagramsocket。
此類表示資料報包。
資料報包用來實作無連接配接包投遞服務。每條封包僅根據該包中包含的資訊從一台機器路由到另一台機器。從一台機器發送到另一台機器的多個包可能選擇不同的路由,也可能按不同的順序到達。不對包投遞做出保證。
多次接收用戶端發來的資訊
192.168.1.255(最後的255表示這個域裡面的廣播位址,發給這個位址的資訊,在域裡面的人都能收到)
模拟聊天程式(出現綁定異常)
簡單連接配接示例代碼:
用戶端發送資訊給伺服器并接收伺服器發回來的資訊,伺服器接收用戶端發送的資訊并回複資訊給用戶端
小練習,用戶端發送文本給服務端,服務端把收到的文本轉成大寫後再發給用戶端
網絡版的上傳檔案
單人上傳圖檔
接收多人上傳圖檔或其他檔案的伺服器
傳回一個 <code>urlconnection</code> 對象,它表示到 <code>url</code> 所引用的遠端對象的連接配接。
一、在學的過程中遇見過這樣一個問題,在f:盤下有一個test.java檔案
package lie14_1;
public class test {
/**
* @param args
*/
public static void main(string[] args) {
// todo auto-generated method stub
system.out.println(11);
}
}
當在cmd下運作javac test.java的時候,運作用過,但是用java test的時候報錯,最後發現是包的問題package lie14_1;把包删除就可以了。具體原因不詳。