python學習之Socket程式設計初識

2021-10-02 22:45:26 字數 1537 閱讀 6989

在計算機通訊領域,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是一種 開啟 讀 寫 關閉 模式的實現,伺服器和客戶端各自維護乙個 檔案 在建立連線開啟後,可...