在計算機通訊領域,socket 被翻譯為「套接字」,它是計算機之間進行通訊的一種約定或一種方式。通過 socket 這種約定,一台計算機可以接收其他計算機的資料,也可以向其他計算機傳送資料。
首先需要了解osi模型,osi模型共有七層:網路通訊要素:
ip位址socket通訊流程
1伺服器根據位址型別(ipv4、ipv6)、socket型別、協議建立socket
2伺服器為socket繫結ip位址和埠號
3伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時候伺服器的socket並沒有被開啟
4客戶端建立socket
5客戶端開啟socket,根據伺服器ip位址和埠號試圖連線伺服器socket
6伺服器socket接收到客戶端socket請求,被動開啟,開始接收客戶端請求,直到客戶端返回連線資訊。這時候socket進入阻塞狀態,所謂阻塞狀態即accept()方法一直等到客戶端返回連線資訊才返回,開始接收下乙個客戶端連線請求
7客戶端連線成功,向伺服器傳送連線狀態資訊
8服務端accept方法返回,連線成功
9客戶端向socket寫入資訊(或服務端向socket寫入資訊)
10伺服器讀取資訊(客戶端讀取資訊)
11客戶端關閉
12服務端關閉
如下**:
socket服務端
import socket
#建立socket物件
sk=socket.socket()
#繫結ip位址與埠號
sk.bind((「127.0.01」,」13000」))#使用元組進行傳參
#監聽,有沒有請求過來
sk.listen()
print(「服務端已經啟動了」)
#等待傳入連線,在連線成功之前,保持阻塞狀態
#連線成功之後,會返回乙個新的套接字和客戶端的ip位址和埠號
sonn,addr=sk.accept()
#接受資料
data=conn.recv()
print(「客戶端:」,data)
server_input=input(「請輸入》」)
#傳送資料
conn.sendall(server_input)
#關閉連線
conn.close()
sk.close()
socket客戶端
import socket
sk=socket.socket()
sk.connect((「127.0.0.1」,13000))
client_input=input(「請輸入》」)
sk.sendall(client_input.encode(「utf8」))
data=sk.recv(1024)
print(「服務端:」,data.decode(「utf8」))
sk.close()
Python日常學習之Socket詳細解析
前言 在python學習中socket相信大家都不會陌生,因為是是乙個介面通道,裡面不僅封裝了ip位址還有埠協議等,下面本文就socket做乙個比較詳細的講解,廢話不多說我們開始吧。正文socket基礎 什麼是socket?socket為介面通道,內部封裝了ip位址 埠 協議等資訊 我們可以看作是以...
python學習筆記之socket,及中文編碼問題
server.py coding cp936 基於切換連線的迴圈通訊 import socket 首先我們在檔案中匯入socket 模組 phone socket.socket 例項化乙個物件 phone.bind 10.11.32.7 8765 bind是存放ip位址的 這裡存放的是本地的ip位址...
Python學習 Socket程式設計
應用程式兩端通過 套接字 向網路發出請求或者應答網路請求。可以把socket理解為通訊的把手 hand 是乙個介面,封裝了大量方法 socket起源於unix,在unix一切皆檔案哲學的思想下,socket是一種 開啟 讀 寫 關閉 模式的實現,伺服器和客戶端各自維護乙個 檔案 在建立連線開啟後,可...