婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python實現socket庫網絡通信套接字

Python實現socket庫網絡通信套接字

熱門標簽:市場上的電銷機器人 北瀚ai電銷機器人官網手機版 佛山400電話辦理 朝陽手機外呼系統 地圖標注面積 所得系統電梯怎樣主板設置外呼 儋州電話機器人 北京電銷外呼系統加盟 小蘇云呼電話機器人

Socket 套接字:通訊端點 簡介

socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆文件”,對于文件用【打開】【讀寫】【關閉】模式來操作。socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)。

Socket 是任何一種計算機網絡通訊中最基礎的內容。Socket通訊一般用戶C/S結構系統的網絡通訊。

Socket 網絡通訊是基于TCP(傳輸控制協議)或UDP(用戶數據報協議)兩種協議通訊,所以有 面向連接(TCP )與無連接(UDP ) 兩種通訊方式。

Python 要創建TCP 套接字就得在創建的時候,指定套接字類型為SOCK_STREAM,它使用 TCP/IP通訊協議。

Socket網絡通信套接字

socket庫提供了一個底層C API,可以使用BSD套接字接口實現網絡通信。它包括socket類,用于處理具體的數據通道,還包括用來完成網絡相關任務的函數,如將一個服務器名轉換為一個地址以及格式化數據以便在網絡上發送。

什么是套接字?

套接字是程序在本地或者通過互聯網來回傳遞數據時所用通信通道的一個端點。

套接字有2個主要屬性用于控制如何發送數據:地址簇(address family)控制所用的OSI網絡層協議;套接字類型(socket type)控制傳輸層協議。(參考《計算機網絡》7層協議)

地址簇

Python支持3個地址簇:

  • AF_INET:用于IPv4尋址。IPv4長度為4個字節,通常表示為4個數的序列,每個字節對應一個數,用點號分割(如121.63.0.243)。這些值通常被稱為IP地址。目前IPv4依舊還是主流。
  • AF_INET6:用于IPv6尋址。目前IPv6已經小范圍應用,它支持128位地址和通信流調整,還支持IPv4不支持的一些路由特性。
  • AF_UNIX:用于UNIX域套接字(UDS)的地址簇,這是一種POSIX兼容系統上的進程間通信協議。UDS的實現通常允許操作系統直接從進程向進程間傳遞數據,而不用通過網絡棧。這比使用AF_INET更高效,但是由于要用到文件系統作為尋址的命令空間,所以UDS僅限于同一個系統上的進程。

套接字類型

套接字類型有兩種:

  • SOCK_DGRAM:面向消息的數據報傳輸,數據報套接字通常與UDP關聯,即用戶數據報協議。這些套接字能提供不可靠的消息傳送。
  • SOCK_STREAM:面向流的傳輸,與TCP相關,即傳輸控制協議。它們可以在客戶和服務器之間提供字節流,通過超時管理,重傳和其他特性確保提供消息傳送或失敗通知。

大多數應用協議(如HTTP)都建立在TCP基礎上,因為這樣更容易創建自動處理消息排序和傳送的復雜應用。

UDP通常用于順序不太重要的協議(如DNS交換)。UDP與TCP都支持IPv4與IPv6。

套接字的簡單應用

gethostbyname_ex()與gethostbyname()

socket庫包含一些與網絡上的域名服務交互的函數,比如解析域名為IP地址可以用到gethostbyname_ex(),示例如下:

import socket

host_str = [
    'www.baidu.com',
    'cloud.tencent.com',
    'www.csdn.net'
]
for host in host_str:
    try:
        name, aliases, addresses = socket.gethostbyname_ex(host)
        print(host)
        print("主機名:", name)
        print("所有別名:", aliases)
        print("所有可用IP地址:", addresses)
    except socket.error as msg:
        print(host, msg)

運行之后,效果如下:

gethostbyname_ex:該函數返回3個參數,主機名,別名,以及解析能跳轉到當前主機的IP地址。

gethostbyname:類似的函數,只返回當前主機的IP地址。

getservbyname()與getservbyport()

socket庫提供getservbyname()函數用于查找網絡服務的端口號和標準名,示例如下所示:

import socket
from urllib.parse import urlparse

url_str = [
    'https://www.baidu.com',
    'https://www.csdn.net',
    'smtp://smtp.qq.com',
]
for url in url_str:
    try:
        parsed_url = urlparse(url)
        port = socket.getservbyname(parsed_url.scheme)
        print(url)
        print("端口號:", port)
    except socket.error as msg:
        print(url, msg)

運行之后,效果如下:

當然,其實最有用的并不是給定一個鏈接去查詢端口號,而是逆向操作。(因為標準化服務端口號一般都是固定的)

socket庫提供getservbyport()函數用于完成逆向的服務端口查找,示例代碼如下所示:

import socket

url = '{}://smtp.qq.com'.format(socket.getservbyport(25))
print(url)

運行之后,效果如下:

getprotobyname()

socket庫還可以使用getprotobyname()函數獲取分配給一個傳輸協議的端口號,示例如下:

import socket

#獲取匹配開頭字符串的所有屬性值
def getConstants(prefix):
    return {
        getattr(socket, n): n
        for n in dir(socket)
        if n.startswith(prefix)
    }
ipproto_str = getConstants("IPPROTO_")
for agree in ['tcp', 'udp']:
    num = socket.getprotobyname(agree)
    name = ipproto_str[num]
    print(name, num)

運行之后,效果如下:

對于協議碼,在程序定義中一般都是標準化常量,這就是意味著,它們的常量名都有一定的規律,而socket協議碼前綴是IPPROTO_。

getaddrinfo(查找服務器地址)

getaddrinfo()函數用于將一個服務的基本地址轉換為一個元組列表,其中包含建立一個連接所需要的全部信息。比如其網絡簇與協議等,示例如下:

import socket

# 獲取匹配開頭字符串的所有屬性值
def getConstants(prefix):
    return {
        getattr(socket, n): n
        for n in dir(socket)
        if n.startswith(prefix)
    }
ipproto_str = getConstants("IPPROTO_")
family_str = getConstants("AF_")
type_str = getConstants("SOCK_")
for response in socket.getaddrinfo('www.csdn.net', 'http', family=socket.AF_INET, type=socket.SOCK_STREAM,
                                   proto=socket.IPPROTO_TCP, flags=socket.AI_CANONNAME):
    family, socktype, ipproto, canonname, sockaddr = response
    print("地址簇:       ", family_str[family])
    print("套接字類型:    ", type_str[socktype])
    print("協議碼:       ", ipproto_str[ipproto])
    print("主機規范名:    ", canonname)
    print("ip地址與端口號:", sockaddr)

運行之后,效果如下:

這里如果只用socket.getaddrinfo(‘www.csdn.net', ‘http'),表示不需要過濾任何連接信息,但大型的網站一般都有幾個IP或者域名跳轉到主頁的。

所以通過后面的參數,可以篩選自己需要的鏈接信息。

其中,最后一個參數socket.AI_CANONNAME表示如果主機有別名,那么結果中會包含服務器的標準名。所有沒有這個標志,標準名為空。

IP地址的表示方式

如果讀者有C的經驗,那么肯定知道,通過C語言編寫的套接字程序是使用struct sockaddr結構體,它將IP地址表示為二進制,而不是上面顯示的Python字符串形式。

如果想在Python和C之間轉換IPv4地址,可以使用inet_aton()和inet_ntoa()。示例如下:

import socket
import binascii

ip_list = [
    "192.168.50.1",
    "127.0.0.1"
]
for ip in ip_list:
    packed = socket.inet_aton(ip)
    print("原始字符串ip地址:", ip)
    print("C庫能識別的ip地址", binascii.hexlify(packed))
    print("還原C庫ip地址字符串", socket.inet_ntoa(packed))
    print()

運行之后,效果如下:

inet_pton()與inet_ntop()

相信讀者如果在測試上面代碼,那么輸入上面inet_aton()函數時,一定看到提醒中還有inet_pton()與inet_ntop()函數。

這2個函數既能處理IPv4也能處理IPv6,而inet_aton()和inet_ntoa()只能處理IPv4。它們的使用方式如下:

import socket
import binascii

ipv6_str = "2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b"
packed = socket.inet_pton(socket.AF_INET6, ipv6_str)
print("原始字符串ip地址:", ipv6_str)
print("C庫能識別的ip地址", binascii.hexlify(packed))
print("還原C庫ip地址字符串", socket.inet_ntop(socket.AF_INET6, packed))
print()

ipv4_str = "192.168.50.1"
packed = socket.inet_pton(socket.AF_INET, ipv4_str)
print("原始字符串ip地址:", ipv4_str)
print("C庫能識別的ip地址", binascii.hexlify(packed))
print("還原C庫ip地址字符串", socket.inet_ntop(socket.AF_INET, packed))
print()

運行之后,效果如下:

以上就是Python實現socket庫網絡通信套接字的詳細內容,更多關于Python socket庫的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 分析python并發網絡通信模型
  • Python中socket網絡通信是干嘛的
  • 教你使用Python建立任意層數的深度神經網絡
  • Python利用PyQt5制作一個獲取網絡實時數據NBA數據播報GUI功能
  • python網絡通信圖文詳解

標簽:云南 龍巖 酒泉 寧夏 金融催收 定西 江蘇 商丘

巨人網絡通訊聲明:本文標題《Python實現socket庫網絡通信套接字》,本文關鍵詞  Python,實現,socket,庫,網絡通信,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實現socket庫網絡通信套接字》相關的同類信息!
  • 本頁收集關于Python實現socket庫網絡通信套接字的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品你懂的在线欣赏| 欧美日韩国产乱码电影| 肉色丝袜一区二区| 成人黄色国产精品网站大全在线免费观看| 中文字幕中文字幕在线一区 | 欧美电影在哪看比较好| 欧美日韩国产123区| 亚洲第一搞黄网站| 亚洲福利电影网| 亚洲欧洲日本在线| 精品国产一区二区精华| 91精品中文字幕一区二区三区| 欧美日韩国产bt| 国产精品久久三| 精品国产1区2区3区| 国产成人精品免费一区二区| 欧美久久久影院| 在线观看一区二区精品视频| 91精品国产综合久久精品app| 欧美精品三级在线观看| 99久久精品费精品国产一区二区| 亚洲成人av一区| 亚洲一卡二卡三卡四卡无卡久久| 国产精品网站导航| 国产精品久久久久久久久久久免费看| 欧美精品一区在线观看| 日韩精品欧美精品| 国产精品久久久一区麻豆最新章节| 日韩成人午夜精品| 精品免费日韩av| 中文字幕第一区第二区| 欧美情侣在线播放| 日韩欧美一级精品久久| 日韩欧美一区二区不卡| 欧美mv和日韩mv国产网站| 欧美三片在线视频观看| 亚洲在线观看免费视频| 综合分类小说区另类春色亚洲小说欧美 | 一本到三区不卡视频| 欧美色窝79yyyycom| 韩国女主播成人在线| 日韩vs国产vs欧美| 久久97超碰国产精品超碰| 91麻豆精品91久久久久久清纯 | 欧美日韩成人综合| 精品视频在线免费看| 欧美日韩一区二区在线观看| 国产丝袜在线精品| 1024国产精品| 成人久久久精品乱码一区二区三区| 欧美高清视频不卡网| 一区二区三区在线播放| 国产精品亚洲午夜一区二区三区 | 久久五月婷婷丁香社区| 欧美日韩精品欧美日韩精品| 色哟哟一区二区在线观看| 日韩一区二区电影在线| 日本一区二区三区高清不卡| 亚洲欧美日韩一区| 激情国产一区二区| 精品视频在线看| 久久久久久久久久久久久久久99 | 亚洲永久免费视频| 国产成人午夜视频| 日韩一级片在线观看| 国产精品色在线观看| 久久精品国产免费看久久精品| 99国产精品久久久久久久久久 | 日韩免费一区二区| 欧美国产综合一区二区| 99久久综合国产精品| 日韩成人精品在线| 精品国产乱码久久久久久影片| 国产一区福利在线| 91麻豆精品国产91久久久久| 成av人片一区二区| 亚洲免费av在线| 日韩免费观看2025年上映的电影 | 一区二区三区四区av| 亚洲第一精品在线| 欧美日韩一区二区电影| 欧美少妇xxx| 欧美视频在线观看一区| 国产精品剧情在线亚洲| 欧美疯狂做受xxxx富婆| 久久99精品国产麻豆婷婷| 国产精品女主播在线观看| 久久久噜噜噜久久中文字幕色伊伊| av影院午夜一区| 国产精品99久久久久久宅男| 亚洲成人精品影院| 婷婷久久综合九色综合伊人色| 亚洲国产成人高清精品| 国产主播一区二区三区| 久久久久国产精品免费免费搜索| 韩国精品在线观看| 亚洲人成人一区二区在线观看| 99麻豆久久久国产精品免费优播| 夜色激情一区二区| 久久综合色婷婷| 欧美三级乱人伦电影| 国产高清在线精品| 丝袜诱惑亚洲看片| 久久亚洲精精品中文字幕早川悠里| 国内精品视频666| 亚洲国产成人av| 亚洲青青青在线视频| 久久久久久一二三区| 欧美一卡二卡三卡四卡| 欧美中文一区二区三区| av网站免费线看精品| 国产美女在线观看一区| 蜜臀av一区二区在线免费观看| 亚洲国产精品久久不卡毛片| 国产三级三级三级精品8ⅰ区| 日韩一区二区免费在线观看| 欧美军同video69gay| 欧美日韩成人综合天天影院 | 北岛玲一区二区三区四区| 久久99精品国产麻豆婷婷洗澡| 青青草国产成人av片免费| 蜜臀精品久久久久久蜜臀| 日韩**一区毛片| 麻豆专区一区二区三区四区五区| 日韩国产高清在线| 男人的天堂久久精品| 九九热在线视频观看这里只有精品 | 国产精品毛片高清在线完整版| 国产偷v国产偷v亚洲高清| 国产精品视频第一区| 一区二区视频在线| 蜜臂av日日欢夜夜爽一区| 精品一区二区三区香蕉蜜桃| 成人永久免费视频| 91麻豆精品国产综合久久久久久| 国产欧美一区二区精品性色超碰| 国产精品毛片大码女人| 日韩精品国产精品| 北条麻妃一区二区三区| 欧美大片在线观看一区| 亚洲欧美日韩中文字幕一区二区三区 | 日韩欧美在线网站| 最新国产の精品合集bt伙计| 午夜视频一区二区三区| 成人激情校园春色| 26uuu久久天堂性欧美| 日韩av在线播放中文字幕| av一本久道久久综合久久鬼色| 91精品一区二区三区在线观看| 亚洲视频一区二区在线| 久久er99精品| 国产精品自拍毛片| 亚洲日本免费电影| 日韩精品国产精品| 狠狠久久亚洲欧美| 欧美一二三区精品| 韩国中文字幕2020精品| 欧美xxx久久| 国产成人啪免费观看软件| 国产午夜精品久久久久久免费视 | 婷婷综合在线观看| 91精品国产丝袜白色高跟鞋| 日产国产高清一区二区三区| 91精品国产综合久久久久久| 青青青伊人色综合久久| 精品国产乱码久久久久久图片| 国产aⅴ综合色| 国产精品无遮挡| 欧美日韩国产乱码电影| 国产精品18久久久久久久久| 亚洲天堂免费看| 91精品国产综合久久福利| 国产精品自产自拍| 婷婷激情综合网| 国产精品青草久久| 欧美精品三级在线观看| www.一区二区| 免费欧美在线视频| 亚洲日韩欧美一区二区在线| 精品国产乱码久久| 欧美日韩国产综合久久 | 亚洲精品国产无套在线观| 日韩免费看的电影| 色综合色综合色综合色综合色综合| 蜜臀国产一区二区三区在线播放 | 国产精品久久久久久久浪潮网站| 欧美日韩精品专区| 日本久久电影网| 色综合色综合色综合| 丁香激情综合五月| 国产成人h网站| 国产精品一级片| 国产成人在线电影| 国产成人精品免费网站| 国产成人三级在线观看| 成人免费高清视频| 99国内精品久久| 制服丝袜亚洲播放| 久久午夜老司机|