1.c/s架構:
c/s架構:客戶端(client)/服務端(server)架構,這種架構也是從使用者層面(也可是物理層面)來劃分的.這裡客戶端一般指需先安裝再執行的應用程式.對作業系統依賴性較大;服
務端即是這類程
序對應的伺服器.
b/s架構:browser/server,瀏覽器端與伺服器端架構.也是c/s架構的一種,只是這個客戶端不需要大家去安裝什麼應用程式,只需在瀏覽器上通過http請求伺服器端相關的資源
(網頁資源).
硬體cs架構:印表機
2. 網路通訊的整個流程
集線器:將所有電腦聯通起來
交換機:公升級版的集線器
網絡卡:接收處理電訊號
ip位址段:192.168.12.0 --- 192.168.12.255 同一ip位址段,稱為同一子網,以廣播的形式通訊.192.168.0.0 -- 192.168.255.255
子網掩碼:計算是否屬於同一網段,同一子網 255.255.255.0
目標ip位址是:
192.168.12.16
11000000.10101000.00001100.00010000
255.255.255.0
11111111.11111111.11111111.00000000
11000000.10101000.00001100.00000000
192.168.12.0
dhcp協議:自動獲取ip位址
arp協議:通過ip位址獲取mac位址
路由協議:找到乙個路由**的最優路徑
3.初識socket
服務端
#客戶端匯入socket模組
import
socket
#建立socket物件,建立了乙個手機
server =socket.socket()
#給程式設定乙個ip位址和埠號,買了個手機卡
ip_port = ('
192.168.12.11
',8002)
#繫結ip位址和埠,插卡
server.bind(ip_port)
#監聽ip位址和埠,簡稱開機
server.listen()
#等待建立連線, conn是連線通道,addr是客戶端的位址
conn,addr =server.accept()
#服務端通過conn連線通道來收發訊息,通過recv方法,recv裡面的引數是位元組(b),1024的意思1024b=1kb
from_client_msg = conn.recv(1024)
print('
高旺說:
',from_client_msg.decode('
utf-8'))
#回覆訊息:通過send方法,引數必須是位元組型別的,
conn.send('
約嗎'.encode('
utf-8'))
#關閉通道,關**,通過close方法
conn.close()
#關閉socket物件,關機
server.close()
#匯入socket
import
socket
#建立乙個socket物件
client =socket.socket()
#找到服務端的ip位址和埠
server_ip_port = ('
192.168.12.11
',8002)
#連線服務端的應用程式,通過connect方法,引數是服務端的ip位址和埠,打**
client.connect(server_ip_port)
#發訊息,用的send方法,但是呼叫者是client的socket物件
client.send('
約嗎?'.encode('
utf-8'))
from_server_msg = client.recv(1024)
print('
高旺的女朋友說:
',from_server_msg.decode('
utf-8'))
client.close()
初學網路程式設計
昨天到今天幾乎都在做這個問題,利用socket設計乙個簡單的聊天工具。現在可以說是成功了80 了。並通過學習這方面知識還補充了一些mfc和網路方面的知識,一舉好幾得。但是眼睛有點疲勞,因為對著顯示器的時間長了嘛!乙個最大的體會就是原來乙個聊天程式並沒有我以前想象的那麼難啊,計算機這東西怪不得有人說它...
網路程式設計(初學)
目錄 二 網路協議的五層模型 三 寫乙個客戶端和服務端的例子 b browser s server 瀏覽器 服務端,例如京東 天貓 b s架構本質也是c s架構 現在學習網路程式設計就是為了寫乙個c s架構的軟體 s端 伺服器端 網路 網路連線介質 網路協議 osi七層 網路協議 又稱osi七層協議...
初學socket程式設計(網路程式設計)
tcp 是面向連線的,三次握手成功之後才能通訊,位元組流傳輸,效率低於udp,但是安全性高 因為採用了三次握手和四次揮手協議 雙方需要建立連線才能通訊 傳送資料 底層使用tcp協議,tcp底層是用http協議。tcp三次握手四次揮手示意圖 tcp通訊實現 先建立伺服器端 tcp協議服務端 publi...