一、c/s架構
c/s就是客戶端/服務端的模式,比如瀏覽器就是客戶端,一台伺服器就是服務端,二者進行資料的互動
二、osi七層
應用層:就是我們所用的應用程式
運輸層:這裡需要了解的就是tcp/udp協議,這裡就是封裝的tcp協議,也就是你所執行的應用程式的埠號
物理層:用於通訊的介質,比如雙絞線,無線電波等
上述的過程就可以唯一標識一台計算機,然後完成通訊
三、socket層
socket層封裝了運輸層,網路層,資料鏈路層的協議標準,我們只需要按照socket的程式設計規範就可以實現整體封裝以達到通訊的目的socket
是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中
,socket其實就是乙個門面模式,它把複雜的tcp/ip協議族隱藏在
socket介面後面,
對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,
以符合指定的協議。
所以,我們無需深入理解tcp/udp協議,
socket已經為我們封裝好了
我們只需要遵循socke
t的規定去
程式設計,寫出的程式自然就是遵循tcp/udp標準的。我們就可以通過socekt去唯一
標識世界上的一台計算機完成通訊。
四、socket套接字
1、基於檔案型別的套接字
套接字家族的名字:af_unix
unix一切皆檔案,基於檔案的套接字呼叫的就是底層的檔案系統來取資料,兩個套接字程序執行在同一機器,可以通過訪問同乙個檔案系統間接完成通訊
2、基於網路型別的套接字
套接字家族的名字:af_inet
(還有af_inet6被用於ipv6,還有一些其他的位址家族,不過,他們要麼是只用於某個平台,要麼就是已經被廢棄,或者是很少被使用,或者是根本沒有實 現, 所有位址家族中,af_inet是使用最廣泛的乙個,python支援很多種位址家族,但是由於我們只關心網路程式設計,所以大部分時候我麼只使用af_inet)
3、socket套接字的工作原理
實現服務端和客戶端通訊
import socketback_log=5
buffer_size=1024
ip_port = ('127.0.0.1',8000)
tcp_server = socket.socket(socket.af_inet,socket.sock_stream)
tcp_server.bind(ip_port)
tcp_server.listen(back_log)
while true:
conn,addr = tcp_server.accept()
print("雙向連線",conn)
print("客戶端位址",addr)
while true:
try:
data = conn.recv(buffer_size)
except exception:break
print("客戶端發來的訊息",data.decode('utf-8'))
meg = input(">>>")
conn.send(meg.encode('utf-8'))
conn.close()
tcp_server.close()
python入門之簡單socket
tcp from socket import host 127.0.0.1 port 12345 addr host,port server socket af inet,sock stream server.bind addr server.listen 5 print start listen....
Python之socket網路程式設計
實現主機間或一台電腦上的程序間進行通訊 例項如下 服務端 匯入socket sys模組 import socket import sys 建立socket物件 serversocket socket.socket socket.af inet,socket.sock stream 獲取本地主機名 h...
Python之Socket網路程式設計
socket起源於unix,而unix linux基本哲學之一就是 一切皆檔案 對於檔案用 開啟 讀寫 關閉 模式來操作。socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作 讀 寫io 開啟 關閉 socket和file的區別 1 file模組是...