黑馬程式設計師 網路程式設計

2021-06-20 03:31:53 字數 3730 閱讀 3589

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

1:網路程式設計

(1)網路程式設計:通過程式語言實現計算機鍵的資料通訊。

(2)網路程式設計的三要素:

a:ip位址。

網路中每一台計算機的唯一標識。

b:埠

用於標識程序的邏輯位址

c:協議

定義通訊規則

舉例:我要和小青說話。

a:找到小青。

b:小青用耳朵接收。

c:我說家鄉話,你覺得他能聽懂嗎。

給出乙個十進位制的數值:

192.168.3.100

而它在網路中實際上是如下表示的:

11000000 10101000 00000011 01100100

為什麼我們不是採用下面這種方式配置ip的呢?

如果採用二進位制,不方便記憶。

所以,為了方便記憶,把這種表示形式做了改進:"點分十進位制"

ip位址的分類:

a類1.0.0.1---127.255.255.254(1)10.x.x.x是私有位址(私有位址就是在網際網路上不使用,而被用在區域網路中的位址)(2)127.x.x.x是保留位址,用做迴圈測試用的。

b類128.0.0.1---191.255.255.254172.16.0.0---172.31.255.255是私有位址。169.254.x.x是保留位址。

c類192.0.0.1---223.255.255.254192.168.x.x是私有位址

d類224.0.0.1---239.255.255.254

e類240.0.0.1---247.255.255.254

檢視本機ip:ipconfig

檢視網路是否有問題 ping+ip位址

ping 127.0.0.1(本機回環位址)

埠:邏輯埠 我們指的就是邏輯埠

a:每個網路程式都會至少有乙個邏輯埠

b:用於標識程序的邏輯位址,不同程序的標識不一樣

c:有效埠:0~65535,其中0~1024系統使用或保留埠。

通過360可以檢視埠號

協議:定義的規則

tcp建立連線通道

資料無限制

面向連線(三次握手)

可靠速度慢

舉例:藍芽,qq單聊,打**

udp把資料打包

資料有限制

面向無連線

不可靠速度快

舉例:qq聊天室(群聊)

(3)udp協議

a:傳送資料

建立傳送端的socket物件

建立資料,並把資料打包

傳送資料

釋放資源

b:接收資料

建立接收端的socket物件

建立資料報

用資料報接收資料

解析資料

釋放資源

(4)tcp協議

a:傳送資料

建立客戶端的socket物件

獲取輸出流

寫資料釋放資源

b:接收資料

視窗伺服器的socket物件

監聽客戶端的連線

獲取輸入流

讀取資料

顯示資料

釋放資源

(5)案例:

a:多執行緒改進的聊天程式

接收端

public class receivethread implements runnable 

// ds.close();

} catch (ioexception e)

}}

傳送端

public class sendthread implements runnable 

byte bys = line.getbytes();

datagrampacket dp = new datagrampacket(bys, bys.length,

inetaddress.getbyname("192.168.3.18"), 10086);

ds.send(dp);

}// 釋放資源

ds.close();

} catch (ioexception e)

}}

測試類

public class chatroom 

}

b:大寫轉換伺服器

伺服器端

public class serverdemo 

s.close();

// ss.close();

}}

客戶端

public class clientdemo 

pw.println(line);

// 獲取伺服器的反饋

bufferedreader brserver = new bufferedreader(new inputstreamreader(

s.getinputstream()));

string server = brserver.readline();

system.out.println("server:" + server);

} br.close();

s.close();

}}

c:鍵盤錄入寫入文字檔案

伺服器端

public class serverdemo 

out.println(line);

} printwriter pw = new printwriter(s.getoutputstream(), true);

pw.println("資料成功接收");

s.close();

// ss.close();

}}

客戶端

/*

* 寫資料,資料進去了,但是反饋沒有成功。

* 原因:就是因為伺服器不知道你已經寫完了。

* * 怎麼解決?告訴伺服器我寫完了。

* 怎麼告訴:

* a:自定義接收標記 假如有乙個資料叫886,就出事了。

* b:socket提供了乙個方法,來通知我接收了。

* public void shutdownoutput()

*/public class clientdemo

pw.println(line);

}// pw.println("886");

//public void shutdownoutput()

//禁用此套接字的輸出流

s.shutdownoutput();

// 獲取伺服器的反饋

bufferedreader brserver = new bufferedreader(new inputstreamreader(

s.getinputstream()));

string server = brserver.readline();//阻塞

system.out.println("server:" + server);

br.close();

s.close();

}}

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

黑馬程式設計師 網路程式設計

asp.net android ios開發 net培訓 期待與您交流!1.套接字 socket 用於描述 ip位址和埠,是乙個通訊鏈的控制代碼 就是兩個程式通訊用的 類似於 2.有兩種型別 流式socket 是一種面向連線的 socket 針對於面向連線的 tcp服務應用,安全,但效率低 資料報式 ...

黑馬程式設計師 網路程式設計

asp.net unity開發 net培訓 期待與您交流!網路傳輸過程 1,找到對方ip 2,資料傳送到指定埠 每個應用程式對應乙個埠 3,定義通訊規則,即協議 tcp ip tcp 1,面向連線,形成傳輸資料的通道 像打 2,連線中進行大量資料量傳輸 3,可靠協議,三次握手,4,必須建立連線,效率...

黑馬程式設計師 網路程式設計

asp.net unity開發 net培訓 期待與您交流!網路模型 1 osi參考模型 2 tcp ip參考模型 1 ip位址 2 埠號 3 傳輸協議 注意 1 找到ip位址 2 資料要傳送對方指定的應用程式上,為了標識這些應用程式,所以給這些網路應用程式都用數字標識,為了方便稱呼這個數字,叫做邏輯...