bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

怎么在Python中使用socket套接字實(shí)現(xiàn)通信-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Python中使用socket 套接字實(shí)現(xiàn)通信,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于景寧畬族自治網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供景寧畬族自治營(yíng)銷型網(wǎng)站建設(shè),景寧畬族自治網(wǎng)站制作、景寧畬族自治網(wǎng)頁(yè)設(shè)計(jì)、景寧畬族自治網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造景寧畬族自治網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供景寧畬族自治網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

Python主要用來(lái)做什么

Python主要應(yīng)用于:1、Web開(kāi)發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲(chóng);4、嵌入式應(yīng)用開(kāi)發(fā);5、游戲開(kāi)發(fā);6、桌面應(yīng)用開(kāi)發(fā)。

1. socket 在操作系統(tǒng)中它是處于應(yīng)用層與傳輸層的抽象層,它是一組操作起來(lái)非常簡(jiǎn)單的接口(接收數(shù)據(jù)的),此接口接受數(shù)據(jù)之后交個(gè)操作系統(tǒng)

那么為什么?直接給操作系統(tǒng)不是更方便嗎?那么你就想錯(cuò)了

因?yàn)椴僮飨到y(tǒng)的接口遠(yuǎn)比我們想象的要丑陋復(fù)雜,使用操作系統(tǒng)交換數(shù)據(jù),非誠(chéng)繁瑣,,開(kāi)發(fā)者們只能想辦法讓一個(gè)中間人和他們打交道,來(lái)簡(jiǎn)單的實(shí)現(xiàn)數(shù)據(jù)交換,那么就是socket套接字.它的作用就是:與操作系統(tǒng)之間數(shù)據(jù)交換將這些繁瑣的操作,進(jìn)行高度化封裝,和簡(jiǎn)化,

2.我們能夠用它實(shí)現(xiàn)簡(jiǎn)單的通信

在Python中有一個(gè)簡(jiǎn)單的內(nèi)置socket 模塊我們可以用它實(shí)現(xiàn)簡(jiǎn)單的基于TCP協(xié)議的通信

 #基于切換連接的循環(huán)通信
 import socket #首先我們?cè)谖募袑?dǎo)入socket 模塊
 phone = socket.socket() #實(shí)例化一個(gè)對(duì)象
 phone.bind(('127.0.01',8765))#bind是存放ip地址的(這里存放的是本地的IP地址)
 phone.listen(5)#可以設(shè)置連接的個(gè)數(shù),
 while 1:#循環(huán)等待連接
  conn,adds = phone.accept()
  while 1:#要循環(huán)聊天我們要重復(fù)接收發(fā)送
   try: #異常處理
    receives_commands = conn.recv(1024) #接收命令請(qǐng)求,最多接收1024字節(jié)當(dāng)然你也可以調(diào)整
    receivse_commands = receives_commands.decode('utf-8')#網(wǎng)絡(luò)傳輸是以字節(jié)的形勢(shì)的所以我們要進(jìn)行解碼
    print(f'來(lái)自客戶端的消息{receives_commands}') #打印消息
    if receives_commands.upper(0 == 'Q':break #正常結(jié)束
    dispatch_orders = inport('請(qǐng)輸入:').strip().encode('utf-8')
    conn.send(dispatch_orders)
   except ConnectionResetError:#客戶端異常結(jié)束
    print('客戶端終端')
    break
  conn.close() #關(guān)閉連接
 phone.close#關(guān)閉服務(wù)端
 #客戶端
 import socket
 phone = socket.socket()
 phone.connect(('127.0.01',8765))  #連接服務(wù)端地址   
 while 1:     
  dispatch_orders = inport('請(qǐng)輸入:').strip().encode('utf-8')#發(fā)送請(qǐng)求
  if not dispatch_orders:print('不能為空')#不能為空
  phone.send(dispatch_orders)  #發(fā)送      
  if dispatch_orders.upper() ==b'Q':#正常退出
   break
  receives_commands = phone.recv(1024)#接收服務(wù)端的回執(zhí)
  receives_commands = receives_commands.decode('utf-8')#解碼
  print(f'來(lái)自客戶端的消息{receives_commands}') #打印        
 phone.close()#關(guān)閉客戶端

那么我們就通過(guò)socket實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的通信鏈接循環(huán)

其中我們需要注意的是:

1.阻塞 accept 和recv 當(dāng)服務(wù)器和客戶端都屬于同種類阻塞時(shí),那么誰(shuí)都是同步接受或同步發(fā)送的狀態(tài)那么是處于靜止的,這樣是不合理的(就是bug)

2.當(dāng)我們?cè)O(shè)計(jì)時(shí)我們需要知道發(fā)送不能為空,不然服務(wù)端是接收不到消息的所以我們?cè)O(shè)置一個(gè)判斷
有時(shí)我們會(huì)發(fā)現(xiàn)當(dāng)我們接受的超過(guò)1024字節(jié)會(huì)發(fā)生什么?

那么下面我們就來(lái)將回答下這個(gè)問(wèn)題:

下面我們引入一個(gè)操作系統(tǒng)的模塊

Python中 subprocess 模塊就是用來(lái)和cmd 命令行進(jìn)行交流的模塊

 obj = subprocess.Popen('dir',#實(shí)例化對(duì)象括號(hào)內(nèi)第一個(gè)參數(shù)就是我們的cmd命令行的命令,這里我們寫(xiě)的是dir顯示文件夾中內(nèi)容
         shell=True,
         stdout=subprocess.PIPE,
         stderr=subprocess.PIPE,
         )
   print(obj.stdout.read().decode('gbk')) # 正確命令
   print(obj.stderr.read().decode('gbk')) # 錯(cuò)誤命令

那么我們?cè)谶@個(gè)基礎(chǔ)上建立一個(gè)服務(wù)端響應(yīng)客戶端命令的機(jī)制

import socket
import subprocess
phone = socket.socket()
phone.bind(('127.0.01',8695))
phone.listen(5)
while 1:
 conn,adds = phone.accept()
 while 1:
  try:
   receives_commands = conn.recv(1024)
   if receiver_commands ==b'Q':break 
   #obj = subprocess.Popen(Receiving_instructiors,
         # shell= True,
       #stdout = subprocess.PIPE,
       #stderr = subprocess.PIPE
         )
  obj = subprocess.Popen(receives_commands.decode('utf-8')#動(dòng)態(tài)的傳入命令
       shell = True
       stdout = subprocess.PIPE
       stderr = subprocess.PIPE 
       )
 # print(obj.stdout.read().decode('gbk')) # 正確命令
 # print(obj.stderr.read().decode('gbk')) # 錯(cuò)誤命令
  ret = obj.stodut.read()+obj.stderr.read()#將產(chǎn)生的內(nèi)容進(jìn)行拼接
  conn.send(ret)
 except ConnectionResetError:
   print('客戶端終端')
   break 
 conn.close()
phone.close()
import socket
phone = socket.socket()
phone.connect(('127.0.01',8695))
while 1:
 dispatch_orders = inport('請(qǐng)輸入命令:').strip().encode('utf-8')
 if not dispatch_orders:print('輸入不能為空')
 phone.send(dispatch_orders)
 if dispatch_orders.upper() ==b'Q':break
 receives_commands = phone.recv(1024)
 receives_commands = receives_commands.decode('utf-8')
 print(f'來(lái)自客戶端的消息{receives_commands}')
phone.close()

上述就是小編為大家分享的怎么在Python中使用socket 套接字實(shí)現(xiàn)通信了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前標(biāo)題:怎么在Python中使用socket套接字實(shí)現(xiàn)通信-創(chuàng)新互聯(lián)
鏈接分享:http://vcdvsql.cn/article34/dsoppe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站維護(hù)、Google商城網(wǎng)站、虛擬主機(jī)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司