首頁 後端開發 Python教學 python中socket實現TCP通訊的介紹(附範例)

python中socket實現TCP通訊的介紹(附範例)

Oct 13, 2018 pm 04:39 PM
python

這篇文章帶給大家的內容是關於python中socket實現TCP通訊的介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

TCP

TCP(Transmission Control Protocol 傳輸控制協定)是一種面向連接的、可靠的、基於位元組流的傳輸層通訊協議,由IETF的RFC 793定義。在簡化的電腦網路OSI模型中,它完成第四層傳輸層所指定的功能,用戶資料封包協定(UDP)是同一層內 [1]  另一個重要的傳輸協定。在因特網協定族(Internet protocol suite)中,TCP層是位於IP層之上,並應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。

下面是socket實作TCP通訊的示意圖,我們根據示意圖來寫程式

python中socket實現TCP通訊的介紹(附範例)

TCP服務端

伺服器程序首先要綁定一個連接埠並監聽來自其他客戶端的連線。如果某個客戶端連接過來了, 伺服器就與該客戶端建立Socket連接, 隨後的通訊就靠這個Socket連接了。

我們來寫一個簡單的伺服器程序, 它接收客戶端連接,回覆客戶端發送的請求。

import socket
server = socket.socket()
server.bind(('192.168.1.165',8900))
#调用 listen() 方法开始监听端口, 传入的参数指定等待连接的最大数量
server.listen(4)
serObj,address = server.accept()
#当有客户端访问时,实现两边的交流,如果有一方退出,整个程序退出。
#服务器程序通过一个永久循环来接受来自客户端的连接
#这里虽然给出最大连接数为4,但单线程程序也只会响应一个连接
while True:
#建立连接后,服务端等待客户端发送的数据,实现通信
    re_data = serObj.recv(1024).decode('utf-8')
    print('client>>',re_data)
    if re_data == 'quit':
        break
    send_data = input('server>>')
    serObj.send(send_data.encode('utf-8'))
    if send_data == 'quit':
        break
serObj.close()
server.close()
登入後複製

TCP客戶端

大多數連線都是可靠的TCP連線。建立TCP連線時, 主動發起連線的叫做客戶端, 被
動回應連線的叫伺服器。

舉個例子, 當我們在瀏覽器中存取新浪時, 我們自己的電腦就是客​​戶端, 瀏覽器會主動向新浪的伺服器發起連線。如果一切順利, 新浪的伺服器接受了我們的連接, 一個TCP連接就建立起來的, 後面的通信就是發送網頁內容了。

客戶端要主動發起TCP連接, 必須知道伺服器的IP位址和連接埠號碼。

import socket
client = socket.socket()
client.connect(('192.168.1.165',8900))
while True:
    send_data = input("client>>")
    client.send(send_data.encode('utf-8'))
    if send_data == 'quit':
        break
    re_data = client.recv(1024).decode('utf-8')
    if re_data == 'quit':
        break
    print("server>>",re_data)

client.close()
登入後複製

用一個視窗執行客戶端、另一個視窗執行服務端,可以更直觀看見效果。
這裡我的08_pra.py是服務端程序,09_pra.py是客戶端程序

#剛建立連接時的示意圖

python中socket實現TCP通訊的介紹(附範例)

一次通信完成的示意圖

python中socket實現TCP通訊的介紹(附範例)

以上是python中socket實現TCP通訊的介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

模板化的優點和缺點有哪些? 模板化的優點和缺點有哪些? May 08, 2024 pm 03:51 PM

模板化的優點和缺點有哪些?

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Jul 01, 2024 am 07:22 AM

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2

怎麼下載deepseek 小米 怎麼下載deepseek 小米 Feb 19, 2025 pm 05:27 PM

怎麼下載deepseek 小米

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

分享幾個.NET開源的AI和LLM相關專案框架

deepseek怎麼問他 deepseek怎麼問他 Feb 19, 2025 pm 04:42 PM

deepseek怎麼問他

evaluate函數怎麼保存 evaluate函數怎麼保存 May 07, 2024 am 01:09 AM

evaluate函數怎麼保存

NET40是什麼軟體 NET40是什麼軟體 May 10, 2024 am 01:12 AM

NET40是什麼軟體

deepseek該怎麼搜索 deepseek該怎麼搜索 Feb 19, 2025 pm 05:18 PM

deepseek該怎麼搜索

See all articles