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

Python實現(xiàn)基本Socket服務(wù)端與客戶端通信的完整代碼

 更新時間:2023年06月02日 10:05:05   作者:卡卡西最近怎么樣  
這篇文章主要介紹了Python實現(xiàn)基本Socket服務(wù)端與客戶端通信,分步詳解與完整代碼都有,按需所求即可,對Python Socket服務(wù)端與客戶端通信相關(guān)知識感興趣的朋友一起看看吧

該文章使用 python 實現(xiàn)基本的 socket 服務(wù)端與客戶端通信,分步詳解與完整代碼都有,按需所求即可。

(一)服務(wù)端代碼:

1. 引入自帶的socket模塊,并創(chuàng)建一個socket實例,服務(wù)端需要使用 bind 將該實例綁定到指定域名與端口下,域名與端口號放在元組中傳入

import socket
#創(chuàng)建 socket對象
socket_server=socket.socket()
# 綁定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))

2. 設(shè)置端口監(jiān)聽,listen() 內(nèi)書寫數(shù)字,表示可以接受鏈接的數(shù)量

#監(jiān)聽端口
socket_server.listen(1)

3. 使用 accept 方法 等待客戶端連接,該方法是個阻塞方法,沒有鏈接則會一直阻塞在此步。連接成功會返回一個元組,元組內(nèi)分別為 連接對象客戶端地址信息

result=socket_server.accept()
conn=result[0]  #客戶端連接對象
address=result[1]  #客戶端地址信息

4. 使用連接對象的 recv 方法 接收客戶端發(fā)來的消息,1024表緩沖區(qū)大小,可自行設(shè)置,并解碼為UTF-8 格式

   data = conn.recv(1024).decode("UTF-8")
   print(f"客戶端發(fā)來的消息是:{data}")

5. 使用連接對象的 send 方法 給客戶端發(fā)送消息

msg=input("請輸入回復(fù)的消息:")
conn.send(msg.encode("UTF-8"))

6. 通信結(jié)束后分別斷開鏈接

conn.close()
socket_server.close()

完整服務(wù)端代碼:

import socket
#創(chuàng)建 socket對象
socket_server=socket.socket()
# 綁定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))
#監(jiān)聽端口, listen()內(nèi)書寫數(shù)字,表示可以接受鏈接的數(shù)量
socket_server.listen(1)
#等待客戶端連接,接收到的 result是一個二元元組, accept()是一個阻塞的方法,如果沒有連接不會往下執(zhí)行
result=socket_server.accept()
conn=result[0]  #客戶端連接對象
address=result[1]  #客戶端地址信息
print(f"接收到的客戶端連接信息為{address}")
while True:
   #接收客戶端信息,recv接受的參數(shù)是緩沖區(qū)大小,一般1024即可,返回的是一個字節(jié)數(shù)組,bytes對象,不是字符串,再將其decode解碼為字符串對象
   data = conn.recv(1024).decode("UTF-8")
   print(f"客戶端發(fā)來的消息是:{data}")
   #回復(fù)消息
   msg=input("請輸入回復(fù)的消息:")
   if msg=='exit':
       break
   conn.send(msg.encode("UTF-8"))
#關(guān)閉連接
conn.close()
socket_server.close()

(二)客戶端代碼:

1. 引入自帶的socket模塊,并創(chuàng)建一個socket實例,然后鏈接服務(wù)端的域名與端口,也是元組作為參數(shù)傳入

import socket
#創(chuàng)建 socket對象
socket_client=socket.socket()
# 讓 socket對象 socket_client 連接到服務(wù)端
socket_client.connect(("localhost",8888))

2. 然后就可以使用 send 給服務(wù)端發(fā)送消息

msg=input("請輸入你要發(fā)送的消息:")
socket_client.send(msg.encode("UTF-8"))

3. 發(fā)送后使用 recv 等待接收服務(wù)端回復(fù)的消息,同樣需要設(shè)置緩沖區(qū)與解碼

   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服務(wù)器回復(fù)的消息為:{data}")

4. 通信結(jié)束后斷掉鏈接

socket_client.close()

完整客戶端代碼:

import socket
#創(chuàng)建 socket對象
socket_client=socket.socket()
# 讓 socket對象 socket_client 連接到服務(wù)端
socket_client.connect(("localhost",8888))
while True:
   msg=input("請輸入你要發(fā)送的消息:")
   if msg=='exit':
      break
   #發(fā)送消息
   socket_client.send(msg.encode("UTF-8"))
   #接收消息
   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服務(wù)器回復(fù)的消息為:{data}")
socket_client.close()

到此這篇關(guān)于Python實現(xiàn)基本Socket服務(wù)端與客戶端通信的文章就介紹到這了,更多相關(guān)Python Socket服務(wù)端與客戶端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python初學(xué)者常見錯誤詳解

    Python初學(xué)者常見錯誤詳解

    這篇文章主要介紹了Python初學(xué)者常見錯誤詳解,即便是有編程經(jīng)驗的程序員,也容易按照固有的思維和語法格式來寫 Python 代碼,需要的朋友可以參考下
    2019-07-07
  • vscode autopep8無法格式化python代碼問題解決

    vscode autopep8無法格式化python代碼問題解決

    這篇文章主要為大家介紹了vscode autopep8無法格式化python代碼問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Python獲取文件夾下的所有文件路徑小結(jié)

    Python獲取文件夾下的所有文件路徑小結(jié)

    在Python編程過程中,需要獲取某一個文件目錄下的所有文件,或獲取文件目錄下的所有指定后綴名的文件等,本文主要介紹了Python獲取文件夾下的所有文件路徑,感興趣的可以了解一下
    2023-10-10
  • Matplotlib使用和繪制二維圖表教程

    Matplotlib使用和繪制二維圖表教程

    Matplotlib是一個強大的Python繪圖庫,可以用來繪制各種靜態(tài)、動態(tài)和交互式的圖表,文章介紹了Matplotlib的基本概念、繪制折線圖、散點圖、柱狀圖、直方圖和餅圖等方法,并詳細(xì)解釋了Matplotlib的三層結(jié)構(gòu)
    2025-02-02
  • Python進階之@property動態(tài)屬性的實現(xiàn)

    Python進階之@property動態(tài)屬性的實現(xiàn)

    這篇文章主要介紹了Python進階之@property動態(tài)屬性的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python通過OpenCV的findContours獲取輪廓并切割實例

    Python通過OpenCV的findContours獲取輪廓并切割實例

    這篇文章主要介紹了Python通過OpenCV的findContours獲取輪廓并切割實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • pandas數(shù)據(jù)拼接的實現(xiàn)示例

    pandas數(shù)據(jù)拼接的實現(xiàn)示例

    這篇文章主要介紹了pandas數(shù)據(jù)拼接的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python下函數(shù)參數(shù)的傳遞(參數(shù)帶星號的說明)

    python下函數(shù)參數(shù)的傳遞(參數(shù)帶星號的說明)

    python中函數(shù)參數(shù)的傳遞是通過賦值來傳遞的。
    2010-09-09
  • 淺談python新式類和舊式類區(qū)別

    淺談python新式類和舊式類區(qū)別

    python的新式類是2.2版本引進來的,我們可以將之前的類叫做經(jīng)典類或者舊式類。這篇文章主要介紹了淺談python新式類和舊式類區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 20行python代碼實現(xiàn)人臉識別

    20行python代碼實現(xiàn)人臉識別

    這篇文章主要介紹了python人臉識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

通化县| 安义县| 咸丰县| 时尚| 杭州市| 霍林郭勒市| 恩平市| 扶绥县| 乌兰浩特市| 宜昌市| 乾安县| 阿瓦提县| 临洮县| 黔南| 修水县| 吉安市| 哈密市| 栖霞市| 城市| 资溪县| 光山县| 临汾市| 桐梓县| 安平县| 阆中市| 乌海市| 永春县| 屯昌县| 华阴市| 扎兰屯市| 彭山县| 陵川县| 万年县| 田阳县| 平定县| 南靖县| 株洲县| 佛冈县| 元朗区| 克东县| 岳池县|