欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > 淺析Python中的套接字編程

淺析Python中的套接字編程

熱門標(biāo)簽:地圖標(biāo)注視頻廣告 北京電信外呼系統(tǒng)靠譜嗎 洪澤縣地圖標(biāo)注 大連crm外呼系統(tǒng) 無(wú)錫客服外呼系統(tǒng)一般多少錢 百度地圖標(biāo)注位置怎么修改 老人電話機(jī)器人 梅州外呼業(yè)務(wù)系統(tǒng) 高德地圖標(biāo)注是免費(fèi)的嗎

一、為什么使用套接字

套接字是網(wǎng)絡(luò)的基礎(chǔ)。它們使在兩個(gè)不同程序或設(shè)備之間的信息傳輸成為可能。例如,當(dāng)您打開(kāi)瀏覽器時(shí),您作為客戶端正在與服務(wù)器建立連接以進(jìn)行信息傳輸。

在深入探討這種通信之前,讓我們首先弄清楚這些插座的確切含義。

二、什么是套接字

一般而言,套接字是為發(fā)送和接收數(shù)據(jù)而構(gòu)建的內(nèi)部端點(diǎn)。單個(gè)網(wǎng)絡(luò)將具有兩個(gè)套接字,每個(gè)通信設(shè)備或程序一個(gè)。這些套接字是IP地址和端口的組合。根據(jù)所使用的端口號(hào),單個(gè)設(shè)備可以具有n個(gè)插槽。不同的端口可用于不同類型的協(xié)議。請(qǐng)看以下圖像,以了解有關(guān)一些常見(jiàn)端口號(hào)和相關(guān)協(xié)議的更多信息:

現(xiàn)在您已經(jīng)了解了套接字的概念,現(xiàn)在讓我們看一下Python的Socket模塊

三、如何在Python中實(shí)現(xiàn)Socket編程

要使用Python實(shí)現(xiàn)Socket編程,您將需要導(dǎo)入socket模塊或框架。該模塊由創(chuàng)建套接字并幫助它們彼此關(guān)聯(lián)所需的內(nèi)置方法組成。

一些重要的方法如下:

既然您已經(jīng)了解了套接字模塊的重要性,那么讓我們繼續(xù)看一下它如何為Python中的套接字編程創(chuàng)建服務(wù)器和客戶端。

四、什么是服務(wù)器

服務(wù)器可以是程序,計(jì)算機(jī)或?qū)S糜诠芾砭W(wǎng)絡(luò)資源的設(shè)備。服務(wù)器可以在同一臺(tái)設(shè)備或計(jì)算機(jī)上,也可以在本地連接到其他設(shè)備和計(jì)算機(jī),甚至可以遠(yuǎn)程連接。有各種類型的服務(wù)器,例如數(shù)據(jù)庫(kù)服務(wù)器,網(wǎng)絡(luò)服務(wù)器,打印服務(wù)器等。

服務(wù)器通常使用諸如socket.socket(),socket.bind(),socket.listen()等方法來(lái)建立連接并綁定到客戶端。現(xiàn)在,讓我們編寫一個(gè)程序來(lái)創(chuàng)建服務(wù)器。考慮以下示例:

例子:

import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(),1234))          
#port number can be anything between 0-65535(we usually specify non-previleged ports which are > 1023)
s.listen(5)
 
while True:
    clt,adr=s.accept()
    print(f"Connection to {adr}established")  
   #f string is literal string prefixed with f which 
   #contains python expressions inside braces
    clt.send(bytes("Socket Programming in Python","utf-8 ")) #to send info to clientsocket

如您所見(jiàn),創(chuàng)建套接字的第一個(gè)必要條件是導(dǎo)入套接字模塊。之后,使用socket.socket()方法創(chuàng)建服務(wù)器端套接字。

NOTE:

AF_INET是指Internet上的地址,它需要一對(duì)(主機(jī),端口),其中主機(jī)可以是某個(gè)特定網(wǎng)站的URL或它的地址,并且端口號(hào)是整數(shù)。SOCK_STREAM用于創(chuàng)建TCP協(xié)議。

bind()方法接受兩個(gè)參數(shù)作為元組(主機(jī),端口)。但是,最好使用4位數(shù)字的端口號(hào),因?yàn)橥ǔU加幂^小的端口號(hào)。listen()方法允許服務(wù)器接受連接。在這里,5是同時(shí)出現(xiàn)的多個(gè)連接的隊(duì)列。此處可以指定的最小值為0(如果您提供較小的值,則將其更改為0)。如果未指定任何參數(shù),則采用默認(rèn)的合適參數(shù)。

在while循環(huán)允許接受連接永遠(yuǎn)。“ clt”和“ adr”是客戶端對(duì)象和地址。print語(yǔ)句僅打印出客戶端套接字的地址和端口號(hào)。最后,clt.send用于發(fā)送字節(jié)數(shù)據(jù)。

現(xiàn)在我們的服務(wù)器已經(jīng)準(zhǔn)備好了,讓我們繼續(xù)前進(jìn)到客戶端。

五、什么是客戶端

客戶端是從服務(wù)器接收信息或服務(wù)的計(jì)算機(jī)或軟件。在客戶端服務(wù)器模塊中,客戶端從服務(wù)器請(qǐng)求服務(wù)。最好的例子是Web瀏覽器,例如Google Chrome,F(xiàn)irefox等。這些Web瀏覽器向Web服務(wù)器請(qǐng)求用戶指示的所需網(wǎng)頁(yè)和服務(wù)。其他示例包括在線游戲,在線聊天等。

現(xiàn)在讓我們看一下如何用Python編程語(yǔ)言編寫客戶端程序:

例子:

import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 2346))
msg=s.recv(1024)
print(msg.decode("utf-8"))

第一步是導(dǎo)入套接字模塊,然后創(chuàng)建套接字,就像創(chuàng)建服務(wù)器時(shí)一樣。然后,要在客戶端-服務(wù)器之間創(chuàng)建連接,您需要通過(guò)指定(主機(jī),端口)使用connect()方法。

注意:當(dāng)客戶端和服務(wù)器位于同一臺(tái)計(jì)算機(jī)上時(shí),將使用gethostname。(LAN –本地IP / WAN –公用IP)

在這里,客戶端希望從服務(wù)器接收一些信息,為此,您需要使用recv()方法,并且該信息存儲(chǔ)在另一個(gè)變量msg中。請(qǐng)記住,傳遞的信息將以字節(jié)為單位,并且在上述程序的客戶端中,一次傳輸最多可接收1024個(gè)字節(jié)(緩沖區(qū)大小)。可以指定任意數(shù)量,具體取決于傳輸?shù)男畔⒘俊?/p>

最后,正在傳輸?shù)南?yīng)進(jìn)行解碼和打印。

既然您已經(jīng)知道如何創(chuàng)建客戶端-服務(wù)器程序,那么讓我們繼續(xù)看看如何執(zhí)行它們。

5.1、Echo Client-Server

要執(zhí)行這些程序,請(qǐng)打開(kāi)命令提示符,進(jìn)入創(chuàng)建了客戶端和服務(wù)器程序的文件夾,然后鍵入:

py server.py(在這里,server.py是服務(wù)器的文件名,您也可以使用py -3.7 server.py)

完成此操作后,服務(wù)器將開(kāi)始運(yùn)行。要執(zhí)行客戶端,請(qǐng)打開(kāi)另一個(gè)cmd窗口,然后鍵入:

py client.py(此處,client.py是客戶端的文件名)

輸出(服務(wù)器):

(客戶)

讓我們通過(guò)將緩沖區(qū)大小減小到7來(lái)嘗試相同的程序,然后看看我們得到什么輸出:
輸出:

如您所見(jiàn),連接在傳輸7個(gè)字節(jié)后終止。但這是一個(gè)問(wèn)題,因?yàn)槟形词盏酵暾男畔ⅲ⑶疫B接已關(guān)閉。讓我們繼續(xù)解決這個(gè)問(wèn)題。

5.2、Multiple Communications

為了使連接一直持續(xù)到客戶端收到完整的信息,可以使用while循環(huán):

例子:

import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 2346))
while True:
msg=s.recv(7)
print(msg.decode("utf-8"))

完成此操作后,每次傳輸將以7個(gè)字節(jié)的形式接收完整的消息。

但是這一次,如您所見(jiàn),連接不會(huì)終止,您也不知道何時(shí)會(huì)發(fā)生連接。除此之外,如果您實(shí)際上不知道客戶端將從服務(wù)器接收到的消息或信息有多大,該怎么辦。在這種情況下,您實(shí)際上可以在客戶端使用以下代碼:

例子:

complete_info=''
while True:
    msg = s.recv(7)  
    if len(msg)=0:
        break
    complete_info += msg.decode("utf-8")
print(complete_info)

在服務(wù)器端,使用close()方法,如下所示:

clt.close()

輸出如下圖所示:

輸出:

上面的代碼塊所做的全部工作是,檢查信息的大小,并一次將其打印在兩個(gè)字節(jié)的緩沖區(qū)中,再在完成連接后將其關(guān)閉。

六、傳輸Python對(duì)象

直到這里,您才有了傳輸字符串的訣竅。但是,Python中的套接字編程也允許您傳輸Python對(duì)象。這些對(duì)象可以是集合,元組,字典等任何對(duì)象。要實(shí)現(xiàn)此目的,您將需要導(dǎo)入Python的pickle模塊。

6.1、Python pickle模塊

當(dāng)您實(shí)際上在python中序列化或反序列化對(duì)象時(shí),Python pickle模塊就會(huì)出現(xiàn)。讓我們看一個(gè)小例子,

例子:

import pickle
 
mylist=[1,2,'abc']
mymsg = pickle.dumps(mylist) 
print(mymsg)

輸出:

b'x80x03] qx00(Kx01Kx02Xx03x00x00x00abcqx01e。

如您所見(jiàn),在上面的程序中,使用pickle模塊的dumps()函數(shù)對(duì)'mylist'進(jìn)行了序列化。還要注意,輸出以“ b”開(kāi)頭,這意味著它已轉(zhuǎn)換為字節(jié)。在套接字編程中,可以實(shí)現(xiàn)此模塊以在客戶端和服務(wù)器之間傳輸python對(duì)象。

6.2、如何使用pickle模塊傳遞python對(duì)象結(jié)構(gòu)

當(dāng)您將泡菜與套接字一起使用時(shí),您絕對(duì)可以通過(guò)網(wǎng)絡(luò)傳輸任何內(nèi)容。讓我們寫下服務(wù)器端和客戶端對(duì)應(yīng)項(xiàng),以將列表從服務(wù)器傳輸?shù)娇蛻舳耍?/p>

服務(wù)器端:

import socket
import pickle
 
a=10
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 2133))        #binding tuple
s.listen(5)
while True:
    clt , adr = s.accept()
    print(f"Connection to {adr}established")
 
    m={1:"Client", 2:"Server"}
    mymsg = pickle.dumps(m)  #the msg we want to print later
    mymsg = {len(mymsg):{a}}"utf-8") + mymsg
    clt.send(mymsg)

在這里,m是一個(gè)字典,它基本上是一個(gè)python對(duì)象,需要從服務(wù)器發(fā)送到客戶端。這是通過(guò)首先使用dumps()序列化對(duì)象,然后將其轉(zhuǎn)換為字節(jié)來(lái)完成的。現(xiàn)在讓我們寫下客戶端對(duì)應(yīng)的內(nèi)容:

客戶端:

import socket
import pickle
a=10
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 2133))
 
while True:
    complete_info = b''
    rec_msg = True
    while True:
        mymsg = s.recv(10)
       if rec_msg:
            print(f"The length of message = {mymsg[:a]}")
            x = int (mymsg[:a ] )
            rec_msg = False
            complete_info += mymsg
            if len(complete_info)-a == x:
            print("Recieved the complete info")
            print(complete_info[a:])
            m = pickle.loads(complete_info[a:])
            print(m)
            rec_msg = True
complete_info = b''
print(complete_info)

第一個(gè)while循環(huán)將幫助我們跟蹤完整消息(complete_info)以及正在使用緩沖區(qū)接收的消息(rec_msg)。通過(guò)設(shè)置rec_設(shè)置消息,然后,在接收消息時(shí),我所做的就是打印每個(gè)消息,并在大小為10的緩沖區(qū)中接收該消息。此大小可以是任何值,具體取決于您的個(gè)人選擇。

然后,如果收到的消息等于完整的消息,那么我只是將消息打印為已接收的完整信息,然后使用loads()將消息反序列化。上面程序的輸出如下:

這使我們結(jié)束了有關(guān)使用Socket進(jìn)行編程的本文的結(jié)尾。希望您能清楚地理解所有概念。

以上就是淺析Python中的套接字編程的詳細(xì)內(nèi)容,更多關(guān)于Python套接字編程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python 網(wǎng)絡(luò)編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
  • Python socket 套接字實(shí)現(xiàn)通信詳解
  • python使用原始套接字發(fā)送二層包(鏈路層幀)的方法
  • python 基于TCP協(xié)議的套接字編程詳解
  • Python socket套接字實(shí)現(xiàn)C/S模式遠(yuǎn)程命令執(zhí)行功能案例
  • Python網(wǎng)絡(luò)編程之TCP套接字簡(jiǎn)單用法示例
  • Python網(wǎng)絡(luò)編程之TCP與UDP協(xié)議套接字用法示例
  • python利用socketserver實(shí)現(xiàn)并發(fā)套接字功能
  • Python網(wǎng)絡(luò)編程 Python套接字編程
  • 詳解python3中socket套接字的編碼問(wèn)題解決

標(biāo)簽:長(zhǎng)春 吉林 泉州 清遠(yuǎn) 洛陽(yáng) 怒江 岳陽(yáng) 安慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析Python中的套接字編程》,本文關(guān)鍵詞  淺析,Python,中的,套接字,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析Python中的套接字編程》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于淺析Python中的套接字編程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    又黄又爽又色的视频| 欧美日本免费一区二区三区| 欧美大片免费久久精品三p| 一区二区三区在线观看视频| 成人av小说网| 成人做爰视频网站| 国产欧美精品国产国产专区| 国产一区二区久久| 福利视频第一页| 国产清纯白嫩初高生在线观看91 | 91精品国产色综合久久不卡电影 | 欧美日韩在线三级| 国产剧情av麻豆香蕉精品| 丁香啪啪综合成人亚洲小说| 粉嫩av蜜桃av蜜臀av| 日韩亚洲欧美一区| 美腿丝袜亚洲色图| 日本精品在线观看视频| 精品成人免费观看| 国产麻豆成人精品| 国产精品夜夜夜爽阿娇| 中文一区在线播放| 成人久久18免费网站麻豆| 色婷婷综合激情| 伊人色综合久久天天人手人婷| 麻豆免费在线观看视频| 91麻豆精品国产91久久久久久久久 | 亚洲卡通动漫在线| 91丨porny丨首页| 欧美日韩免费一区二区三区视频| 香蕉成人啪国产精品视频综合网| 三级男人添奶爽爽爽视频| 精品国产1区二区| 国产精品亚洲成人| 色av综合在线| 午夜激情综合网| 在线观看免费小视频| 国产精品天天摸av网| 99麻豆久久久国产精品免费 | 亚洲一区二区三区中文字幕| 久久人妻少妇嫩草av无码专区| 日韩精品一区二区三区视频播放| 韩国av一区二区三区四区| 一本一道波多野结衣一区二区| 亚洲一线二线三线视频| 免费观看av网站| 国产精品毛片大码女人| 久久久久99人妻一区二区三区| 日韩区在线观看| 成人综合婷婷国产精品久久蜜臀 | 欧美在线一区二区三区| 日韩电影免费在线观看网站| 黑人と日本人の交わりビデオ| 亚洲欧美日韩一区二区三区在线观看 | 一区二区三区国产| 欧美熟妇一区二区| 国产精品美女久久久久久| 无码成人精品区在线观看| 久久九九影视网| 在线观看视频你懂得| 精品国产91九色蝌蚪| 99久久99久久综合| 日韩欧美一区二区在线视频| 国产iv一区二区三区| 欧美妇女性影城| 国产成人无遮挡在线视频| 欧美日韩国产系列| 国产黄人亚洲片| 欧美夫妻性生活| 国产98色在线|日韩| 7777精品伊人久久久大香线蕉| 国产麻豆成人传媒免费观看| 欧美日韩高清一区二区三区| 国产美女在线精品| 9191成人精品久久| 成人动漫视频在线| 精品国产乱码久久久久久蜜臀| 99精品偷自拍| 精品国产污网站| 成年人看片网站| 国产精品理论片在线观看| 亚洲成人网在线播放| 亚洲精品日韩一| 国产在线观看免费视频软件| 三级精品在线观看| 欧亚洲嫩模精品一区三区| 国产精品香蕉一区二区三区| 日韩三级伦理片妻子的秘密按摩| 91老师国产黑色丝袜在线| 国产欧美精品在线观看| 91国模少妇一区二区三区| 亚洲午夜电影网| 国产乱码字幕精品高清av| 6080yy午夜一二三区久久| 不卡一区二区三区四区| 久久精品视频在线看| 中文字幕av观看| 一区二区成人在线| 欧美黑人猛猛猛| 国产精品综合二区| 欧美不卡视频一区| 老司机午夜免费福利| 亚洲女子a中天字幕| 国产精品精品软件男同| 九九**精品视频免费播放| 91精品国产乱| 五月天激情小说| 亚洲在线视频免费观看| 一本色道亚洲精品aⅴ| 国产69精品久久777的优势| 久久免费电影网| 在线国产视频一区| 日本麻豆一区二区三区视频| 91精品国产综合久久久久| 中国男女全黄大片| 亚洲亚洲人成综合网络| 欧美视频中文一区二区三区在线观看| 成人av资源在线| 中文字幕日韩一区| 国产免费美女视频| 国产白丝精品91爽爽久久| 国产亚洲一区二区三区在线观看| 人妻av无码一区二区三区| 玖玖九九国产精品| 欧美刺激脚交jootjob| 欧美图片一区二区| 裸体一区二区三区| 久久综合狠狠综合久久综合88| 色欲av无码一区二区三区| 久久精品国产一区二区| 久久久久久夜精品精品免费| 手机看片福利视频| 国产精品亚洲专一区二区三区| 国产欧美精品日韩区二区麻豆天美| 蜜桃视频最新网址| 福利一区二区在线| 亚洲欧洲www| 欧美性高清videossexo| 国产人妻精品午夜福利免费| 亚洲大片免费看| 欧美一级黄色录像| 国产ts在线播放| 国产麻豆成人传媒免费观看| 国产精品看片你懂得| 91成人免费电影| 女性生殖扒开酷刑vk| 视频在线观看91| 精品动漫一区二区三区在线观看| 在线视频第一页| 成人综合日日夜夜| 一区二区理论电影在线观看| 3atv在线一区二区三区| 久久av无码精品人妻系列试探| 久久99国产精品免费| 日本一区二区三区在线观看| 人妻少妇精品一区二区三区| 色悠悠在线视频| 久久精品国产**网站演员| 国产色综合一区| 日本二三区不卡| 一区二区免费在线观看视频| 久久www免费人成看片高清| 中文字幕免费不卡在线| 91国内精品野花午夜精品| 91丝袜在线观看| 国产乱码字幕精品高清av| 亚洲女人****多毛耸耸8| 91精品国产色综合久久不卡蜜臀| 免费看91的网站| 91丨国产丨九色丨pron| 蜜桃av一区二区在线观看| 中文字幕免费不卡在线| 欧美日韩一区高清| 青娱乐国产视频| 91视频在线观看| 免费一级片91| 最新成人av在线| 欧美va亚洲va国产综合| 色综合天天综合网天天看片| 日韩av手机在线播放| 国产999精品久久久久久| 亚洲成精国产精品女| 国产日韩欧美精品在线| 欧美日韩成人综合| 熟女av一区二区| 中文字幕免费高清视频| 成人av网在线| 美女网站一区二区| 亚洲欧美一区二区久久| 亚洲精品一区二区在线观看| 色94色欧美sute亚洲线路二 | 国内精品伊人久久久久av影院| 最新日韩av在线| 26uuu精品一区二区| 91成人免费在线| 欧洲性xxxx| 国产十八熟妇av成人一区| 成人一区在线观看| 麻豆精品蜜桃视频网站| 亚洲自拍与偷拍|