Python開發之 Socket程式設計

2022-09-20 03:09:12 字數 1889 閱讀 1007

一、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 socket

back_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模組是...