最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python網(wǎng)絡(luò)編程tcp客戶端及服務(wù)端解讀

 更新時間:2025年01月20日 09:19:37   作者:Bojaka  
Python的socket模塊提供了基本的網(wǎng)絡(luò)通信功能,包括創(chuàng)建socket對象、綁定地址、監(jiān)聽連接、接受連接、發(fā)送和接收數(shù)據(jù)以及關(guān)閉連接等,TCP和UDP是常用的網(wǎng)絡(luò)協(xié)議,IP地址和端口號用于標(biāo)識通信端點,通過這些功能,可以實現(xiàn)客戶端和服務(wù)器之間的網(wǎng)絡(luò)通信

python網(wǎng)絡(luò)編程tcp客戶端及服務(wù)端

Python 的 socket 模塊是用于網(wǎng)絡(luò)編程的標(biāo)準(zhǔn)庫,提供了低級別的網(wǎng)絡(luò)接口,允許程序通過網(wǎng)絡(luò)進行通信。

以下是對 Python socket 模塊的簡要介紹,包括其基本概念、常用功能和示例。

基本概念

Socket:Socket 是網(wǎng)絡(luò)通信的端點。它可以是一個客戶端或服務(wù)器,允許在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)。

協(xié)議socket 模塊支持多種網(wǎng)絡(luò)協(xié)議,最常用的是 TCP(傳輸控制協(xié)議)和 UDP(用戶數(shù)據(jù)報協(xié)議)。

  • TCP:面向連接的協(xié)議,提供可靠的數(shù)據(jù)傳輸。
  • UDP:無連接的協(xié)議,傳輸速度快,但不保證數(shù)據(jù)的可靠性。

IP 地址和端口:每個 socket 都與一個 IP 地址和一個端口號相關(guān)聯(lián)。IP 地址標(biāo)識網(wǎng)絡(luò)上的設(shè)備,端口號標(biāo)識設(shè)備上的特定服務(wù)。

常用功能

創(chuàng)建 Socket

  • 使用 socket.socket() 創(chuàng)建一個新的 socket 對象。
  • 需要指定地址族(如 socket.AF_INET 表示 IPv4)和套接字類型(如 socket.SOCK_STREAM 表示 TCP)。

綁定(Bind)

  • 使用 bind() 方法將 socket 綁定到特定的 IP 地址和端口號。

監(jiān)聽(Listen)

  • 服務(wù)器使用 listen() 方法開始監(jiān)聽傳入的連接請求。

接受連接(Accept)

  • 使用 accept() 方法接受客戶端的連接請求,返回一個新的 socket 對象和客戶端的地址。

連接(Connect)

  • 客戶端使用 connect() 方法連接到服務(wù)器。

發(fā)送和接收數(shù)據(jù)

  • 使用 send()sendall() 方法發(fā)送數(shù)據(jù)。
  • 使用 recv() 方法接收數(shù)據(jù)。

關(guān)閉 Socket

  • 使用 close() 方法關(guān)閉 socket 連接。

tcp客戶端

import socket
target_host = "127.0.0.1"
target_port = 65423
# 創(chuàng)建客戶端套接字
# socket.AF_INET:表示選擇IPv4的地址,socket.SOCK_STREAM:表示TCP傳輸協(xié)議類型
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#連接客戶端 connect the client
client.connect((target_host,target_port))
#使用GET方法發(fā)送數(shù)據(jù)
message = "hello,socker"
client.sendall(message.encode())

#返回數(shù)據(jù)最大字符為4096
response = client.recv(4096)

#打印返回數(shù)據(jù)
print(response.decode())

#關(guān)閉連接

client.close()

tcp服務(wù)端

import socket
import threading

IP = "0.0.0.0"
PORT = 65423

def main():
    # 創(chuàng)建客戶端套接字對象
    # socket.AF_INET:表示選擇IPv4的地址,socket.SOCK_STREAM:表示TCP傳輸協(xié)議類型
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 綁定PORT和IP
    server.bind((IP, PORT))
    # 設(shè)置客戶端最大連接數(shù)量5
    server.listen(5)
    # 打印開啟監(jiān)聽IP和PORT
    print(f" [*] Listening on {IP}:{PORT}")

    # 建立連接
    # 讓服務(wù)器進入主循環(huán)中,并在該循環(huán)中等待外來連接
    while True:
        client, address = server.accept()
        # 打印已接受的客戶端連接的ip和端口
        print(f"[*] Accepted connection from {address[0]}:{address[1]}")
        # 創(chuàng)建一個新的線程client_handler,用于處理與該客戶端的通信
        client_handler = threading.Thread(target=handle_client, args=(client,))
        # 啟動線程開始處理客戶端請求
        client_handler.start()

# 定義處理客戶端請求的函數(shù)handle_client,接受一個客戶端套接字作為參數(shù)
def handle_client(client_socket):
    # 使用with語句確保在處理完客戶端請求后自動關(guān)閉套接字
    with client_socket as sock:
    # 從客戶端最多接受1024字節(jié)的數(shù)據(jù)
        request = sock.recv(1024)
    # 打印接收到的請求內(nèi)容,使用decode("utf-8")將字節(jié)數(shù)據(jù)解碼為字符串
        print(f"[*] Received: {request.decode('utf-8')}")  # 修正引號問題
    # 向客戶端發(fā)送確認(rèn)消息ACK,表示已經(jīng)接收到請求
        sock.send(b"ACK")

if __name__ == "__main__":
    main()

使用編寫的tcp客戶端給服務(wù)發(fā)送幾個測試的數(shù)據(jù)包,應(yīng)該會看到以下輸出

[*] Listening on 0.0.0.0:65423
[*] Accepted connection from 127.0.0.1:63382
[*] Received: hello,socker

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python常見數(shù)據(jù)結(jié)構(gòu)之棧與隊列用法示例

    Python常見數(shù)據(jù)結(jié)構(gòu)之棧與隊列用法示例

    這篇文章主要介紹了Python常見數(shù)據(jù)結(jié)構(gòu)之棧與隊列用法,結(jié)合實例形式簡單介紹了數(shù)據(jù)結(jié)構(gòu)中棧與隊列的概念、功能及簡單使用技巧,需要的朋友可以參考下
    2019-01-01
  • python實現(xiàn)動態(tài)數(shù)組的示例代碼

    python實現(xiàn)動態(tài)數(shù)組的示例代碼

    這篇文章主要介紹了python實現(xiàn)動態(tài)數(shù)組的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python繪制浪漫星空的示例代碼

    Python繪制浪漫星空的示例代碼

    Python的turtle是一個基于tkinter的Python圖形庫,可以幫助初學(xué)者輕松地理解和繪制圖形,本文就來通過turtle繪制一個浪漫的星空動畫吧
    2023-09-09
  • python中導(dǎo)入 train_test_split提示錯誤的解決

    python中導(dǎo)入 train_test_split提示錯誤的解決

    這篇文章主要介紹了python中導(dǎo)入 train_test_split提示錯誤的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用gRPC傳輸協(xié)議教程

    Python使用gRPC傳輸協(xié)議教程

    今天小編就為大家分享一篇關(guān)于Python使用gRPC傳輸協(xié)議教程,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python進程通信之匿名管道實例講解

    Python進程通信之匿名管道實例講解

    這篇文章主要介紹了Python進程通信之匿名管道實例講解,本文直接給出代碼實例,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-04-04
  • Python圖像處理必備技巧分享

    Python圖像處理必備技巧分享

    本文系統(tǒng)梳理了Python圖像處理的15項核心技能,涵蓋圖像讀取、顏色轉(zhuǎn)換、濾波、邊緣檢測、形態(tài)學(xué)操作、特征提取、分割、變換等關(guān)鍵技術(shù),強調(diào)這些基礎(chǔ)技能的組合應(yīng)用可實現(xiàn)復(fù)雜圖像處理任務(wù),需要的朋友可以參考下
    2025-05-05
  • Pytorch中項目配置文件的管理與導(dǎo)入方式

    Pytorch中項目配置文件的管理與導(dǎo)入方式

    這篇文章主要為大家詳細介紹了Pytorch中項目配置文件的管理與導(dǎo)入方式的相關(guān)知識,文中的示例代碼講解詳細,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-12-12
  • python實戰(zhàn)教程之OCR文字識別方法匯總

    python實戰(zhàn)教程之OCR文字識別方法匯總

    ocr是一種光學(xué)字符識別技術(shù),簡單來說它能夠識別出圖像中的文字并且將其給取出來,下面這篇文章主要給大家介紹了關(guān)于python實戰(zhàn)教程之OCR文字識別方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 簡單介紹一下pyinstaller打包以及安全性的實現(xiàn)

    簡單介紹一下pyinstaller打包以及安全性的實現(xiàn)

    這篇文章主要介紹了簡單介紹一下pyinstaller打包以及安全性的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

隆化县| 惠安县| 固安县| 衡南县| 景谷| 余姚市| 彭州市| 岳阳县| 四会市| 保山市| 海南省| 通城县| 定安县| 蓬莱市| 温州市| 额济纳旗| 丹阳市| 灯塔市| 古浪县| 嘉禾县| 福建省| 阳高县| 开平市| 安庆市| 安岳县| 睢宁县| 灵台县| 莒南县| 泗洪县| 丘北县| 涿鹿县| 正安县| 枣强县| 鹤山市| 离岛区| 长沙县| 石渠县| 苗栗县| 江源县| 马山县| 个旧市|