<ins id="6k1m6"><video id="6k1m6"></video></ins>

    <ruby id="6k1m6"><option id="6k1m6"></option></ruby>
    <code id="6k1m6"><option id="6k1m6"></option></code>
  1. <output id="6k1m6"></output>
    400-650-7353
    您所在的位置:首頁(yè) > IT干貨資料 > python > 【Python基礎知識】Socket概述

    【Python基礎知識】Socket概述

    Socket是網(wǎng)絡(luò )編程中常用的一個(gè)術(shù)語(yǔ)。通常一個(gè)Socket表示用計算機軟件建立的一個(gè)網(wǎng)絡(luò )鏈接。一個(gè)Socket的建立過(guò)程需要給出目的計算機的IP地址和端口號,再指定協(xié)議類(lèi)型即可。

    下面給出一個(gè)Socket的示例:

    1. >>> sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0

    其中,第一個(gè)參數代表地址簇,包括如下可選項:

    ①socket.AF_INET,代表IPv4協(xié)議,是默認值。

    ②socket.AF_INET6,代表IPv6協(xié)議。

    ③socket.AF_UNIX,僅在UNIX操作系統進(jìn)程間通信中使用。

    第二個(gè)參數代表類(lèi)型,包括如下可選項:

    ①socket.SOCK_STREAM,代表TCP協(xié)議采用的流式Socket,是默認值。

    ②socket.SOCK_DGRAM,代表UDP協(xié)議采用的數據報式Socket。

    ③socket.SOCK_RAW,代表原始套接字,采用普通的套接字不能處理ICMP、IGMP等網(wǎng)絡(luò )報文,而采用SOCK_RAW則可以處理。SOCK_RAW也可以處理特殊的IPv4報文。此外,利用SOCK_RAW可以通過(guò)IP_HDRINCL套接字選項使用戶(hù)能自己構造IP頭。

    ④socket.SOCK_RDM,代表一種相對可靠的UDP形式,即保證交付數據報,但不保證UDP數據報的順序。在執行某些特殊操作時(shí)需要使用SOCK_RDM,如發(fā)送ICMP報文。

    ⑤socket.SOCK_SEQPACKET,代表提供一種可靠的連續數據報服務(wù)。

    第三個(gè)參數代表協(xié)議,0為默認值,根據地址格式和套接字類(lèi)別,系統會(huì )自動(dòng)選擇一個(gè)合適的協(xié)議。

    Socket具有很多方法,下面分類(lèi)介紹。

    (1)服務(wù)器端套接字方法

    sk.bind(address):將套接字綁定到地址address。在A(yíng)F_INET協(xié)議下,以元組(hostname, port)的形式表示地址。

    sk.listen(backlog):開(kāi)始監聽(tīng),傳入連接的最大數目。backlog指定在系統拒絕連接之前,可以?huà)炱鸬淖畲筮B接數量。例如,backlog=5,表示系統已經(jīng)接到了連接請求,但服務(wù)器端還沒(méi)有調用accept()方法進(jìn)行處理的連接個(gè)數最大為5。這個(gè)值不能無(wú)限大,因為要在系統中維護連接隊列,從而需要資源。

    sk.setblocking(bool):是否阻塞(默認值為T(mén)rue),如果設置為False,那么accept()和recv()在接收到空包無(wú)數據時(shí)報錯。

    sk.accept():接受TCP 客戶(hù)端的連接(阻塞式),等待連接的到來(lái),并返回(conn, address)。其中conn是新建的套接字對象,可以用來(lái)接收和發(fā)送數據;address是連接客戶(hù)端的地址。

    (2)客戶(hù)端套接字方法

    sk.connect(address):連接到address地址的套接字。address的一般格式為元組(hostname, port)。如果連接失敗,返回socket.error錯誤。

    sk.connect_ex(address):連接到address地址的套接字。address的一般格式為元組(hostname, port)。如果連接成功,返回 0 ;如果連接失敗,返回編碼。

    (3)通用套接字方法

    sk.close():關(guān)閉套接字。

    sk.recv(bufsize):接收套接字的數據,數據以字符串形式返回。bufsize是緩沖區大小,指定一次最多可以接收的數據數量。

    sk.recvfrom(bufsize):與recv()類(lèi)似,但返回值是一個(gè)元組(data, address)。其中data是包含接收數據的字符串;address是發(fā)送數據的套接字地址。

    sk.send(string):將string中的數據發(fā)送到連接的套接字。

    sk.sendall(string):發(fā)送完整的TCP數據(本質(zhì)就是循環(huán)調用send()。sendall()在待發(fā)送數據量大于己端緩存區剩余空間時(shí),數據不會(huì )丟失,循環(huán)調用send()直到發(fā)完為止)。

    sk.sendto(string, address):將數據發(fā)送到套接字。address的一般格式為元組(hostname, port),指定遠程地址。

    sk.settimeout(timeout):設置套接字操作的超時(shí)期。timeout是一個(gè)浮點(diǎn)數,單位為秒,值為None表示沒(méi)有超時(shí)期。超時(shí)期一般應該在剛創(chuàng )建套接字時(shí)對于連接的操作設置(如 client 連接最多等待5s )。

    文章“【Python基礎知識】Socket概述”已幫助

    更多內容

    >>本文地址:http://www.littlerockbway.com/zhuanye/2021/69827.html

    THE END  

    聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉載。

    1 您的年齡

    2 您的學(xué)歷

    3 您更想做哪個(gè)方向的工作?

    獲取測試結果
    • 大前端大前端
    • 大數據大數據
    • 互聯(lián)網(wǎng)營(yíng)銷(xiāo)互聯(lián)網(wǎng)營(yíng)銷(xiāo)
    • JavaJava
    • Linux云計算Linux
    • Python+人工智能Python
    • 嵌入式物聯(lián)網(wǎng)嵌入式
    • 全域電商運營(yíng)全域電商運營(yíng)
    • 軟件測試軟件測試
    • 室內設計室內設計
    • 平面設計平面設計
    • 電商設計電商設計
    • 網(wǎng)頁(yè)設計網(wǎng)頁(yè)設計
    • 全鏈路UI/UE設計UI設計
    • VR/AR游戲開(kāi)發(fā)VR/AR
    • 網(wǎng)絡(luò )安全網(wǎng)絡(luò )安全
    • 新媒體與短視頻運營(yíng)新媒體
    • 直播帶貨直播帶貨
    • 智能機器人軟件開(kāi)發(fā)智能機器人
     

    快速通道fast track

    近期開(kāi)班時(shí)間TIME

    两个人在线观看免费播放_国产精品天干天干_亚洲婷婷月色婷婷五月小蛇_男人的好小说全文免费阅读