欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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數(shù)據(jù)結(jié)構(gòu)列表

    Python數(shù)據(jù)結(jié)構(gòu)列表

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)列表,本文重點內(nèi)容主要是對列表數(shù)據(jù)結(jié)構(gòu)的使用,在Python中,序列是一組按順序排列的值。Python?有?3?種內(nèi)置的序列類型:字符串、?元組和列表,下面一起進(jìn)入文章了解更詳細(xì)內(nèi)容吧,需要的小伙伴可以參考一下</P><P>
    2021-12-12
  • Pythony運維入門之Socket網(wǎng)絡(luò)編程詳解

    Pythony運維入門之Socket網(wǎng)絡(luò)編程詳解

    這篇文章主要介紹了Pythony運維入門之Socket網(wǎng)絡(luò)編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python Django模板系統(tǒng)詳解

    Python Django模板系統(tǒng)詳解

    這篇文章主要介紹Django模板系統(tǒng)Django模板系統(tǒng)的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Python 切片索引越界的問題(數(shù)組下標(biāo)越界)

    Python 切片索引越界的問題(數(shù)組下標(biāo)越界)

    Python語言處理字符串、數(shù)組類的問題時有一定概率需要使用切片方法,本文主要介紹了Python 切片索引越界的問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python中的數(shù)據(jù)對象持久化存儲模塊pickle的使用示例

    Python中的數(shù)據(jù)對象持久化存儲模塊pickle的使用示例

    這篇文章主要介紹了Python中的數(shù)據(jù)對象持久化存儲模塊pickle的使用示例,重點講解了pickle中模塊中對象持久化和文件讀取的相關(guān)方法,需要的朋友可以參考下
    2016-03-03
  • Python Numpy 自然數(shù)填充數(shù)組的實現(xiàn)

    Python Numpy 自然數(shù)填充數(shù)組的實現(xiàn)

    今天小編就為大家分享一篇Python Numpy 自然數(shù)填充數(shù)組的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • win10環(huán)境下配置vscode python開發(fā)環(huán)境的教程詳解

    win10環(huán)境下配置vscode python開發(fā)環(huán)境的教程詳解

    這篇文章主要介紹了win10環(huán)境下配置python開發(fā)環(huán)境(vscode)的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • python實現(xiàn)簡易數(shù)碼時鐘

    python實現(xiàn)簡易數(shù)碼時鐘

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡易數(shù)碼時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié)

    Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié)

    這篇文章主要介紹了Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié),本文總結(jié)了最基本最常用的一些操作,需要的朋友可以參考下
    2014-11-11
  • 使用Python實現(xiàn)企業(yè)微信的自動打卡功能

    使用Python實現(xiàn)企業(yè)微信的自動打卡功能

    下面就通過Python程序來實現(xiàn)自動打卡,原理很簡單,用Python設(shè)置定時任務(wù),然后通過adb操作手機,完成打卡功能,感興趣的朋友跟隨小編一起看看吧
    2019-04-04

最新評論