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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

conn.close()
socket_server.close()

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

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

(二)客戶端代碼:

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

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

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

msg=input("請(qǐng)輸入你要發(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對(duì)象
socket_client=socket.socket()
# 讓 socket對(duì)象 socket_client 連接到服務(wù)端
socket_client.connect(("localhost",8888))
while True:
   msg=input("請(qǐng)輸入你要發(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實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信的文章就介紹到這了,更多相關(guān)Python Socket服務(wù)端與客戶端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論