最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的socket網(wǎng)絡(luò)模塊介紹

 更新時間:2022年07月22日 16:46:55   作者:mb62d3c286f15ed  
這篇文章主要介紹了Python中的socket網(wǎng)絡(luò)模塊介紹,Python 中,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言:

Python3 提供了兩個級別訪問的網(wǎng)絡(luò)服務(wù):

  • 低級別的網(wǎng)絡(luò)服務(wù)支持基本的 Socket,它提供了標(biāo)準(zhǔn)的 BSD Sockets API,可以訪問底層操作系統(tǒng)Socket接口的全部方法。
  • 高級別的網(wǎng)絡(luò)服務(wù)模塊 SocketServer, 它提供了服務(wù)器中心類,可以簡化網(wǎng)絡(luò)服務(wù)器的開發(fā)。

Socket

Socket又稱"套接字",應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求,使主機間或者一臺計算機上的進程間可以通訊。

Python 中,我們使用 socket 模塊的 socket 函數(shù)來創(chuàng)建一個 socket 對象。語法格式如下:

socket.socket ( family ,type ,proto)

參數(shù);

  • family: 套接字家族可以使 AF_UNIX 或者 AF_INET
  • type: 套接字類型,可以根據(jù)是面向連接的 SOCK_STREAM 還是非連接的 SOCK_DGRAM
  • protocol: 一般不填,默認為 0

服務(wù)端(server.py)

import socket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #創(chuàng)建socket對象,面向連接的
server.bind(("127.0.0.1",9999)) #綁定主機名和端口號
server.listen(10) #設(shè)置最大連接數(shù),超過后排隊
clientsock,addr=server.accept() #建立與客戶端的連接,返回(socket object, address info)元組對象
print("addr=%s %s"%(addr,type(addr)))
print("客戶端ip地址為:%s 端口號為:%s"%addr)
clientsock.send("歡迎來到服務(wù)端".encode('utf-8')) #python3要求發(fā)送byte型的數(shù)據(jù),所以我們將它以utf-8的形式轉(zhuǎn)換為bytes類型的
msg=clientsock.recv(1024) #接收客戶端發(fā)來的消息,msg2為bytes類型的數(shù)據(jù)
print(msg.decode('utf-8')) #我們將bytes類型數(shù)據(jù)轉(zhuǎn)換成str字符型的數(shù)據(jù),以utf-8的形式
clientsock.close()

客戶端(client.py)

import socket
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",9999)) #connect函數(shù)接收元組型數(shù)據(jù)
msg=client.recv(1024) #接收從服務(wù)器發(fā)來的消息,為bytes類型的數(shù)據(jù),大小為1024字節(jié)的緩沖區(qū)
print(msg.decode('utf-8')) #我們轉(zhuǎn)化為str字符串類型的數(shù)據(jù),以utf-8的形式
client.send("客戶端到此一游".encode('utf-8')) #python3要求發(fā)送bytes類型的數(shù)據(jù),所以我們得將它轉(zhuǎn)換
client.close()

Python中的socket網(wǎng)絡(luò)模塊_數(shù)據(jù)

Python中的socket網(wǎng)絡(luò)模塊_套接字_02

socket中的一些常用方法

import socket
a=socket.gethostname() #獲得本機的主機名,返回str型數(shù)據(jù)
print(a,type(a))
b=socket.gethostbyname(a) #根據(jù)主機名獲取ip地址,返回str型數(shù)據(jù),也可以是網(wǎng)絡(luò)上的域名
print(b,type(b))
c=socket.gethostbyaddr(b) #通過ip獲得該主機的一些信息,返回tuple元組型數(shù)據(jù)
print(c,type(c))
#############################################
Win-10 <class 'str'>
192.168.56.1 <class 'str'>
('bogon', [], ['192.168.56.1']) <class 'tuple'>

Socket 對象(內(nèi)建)方法

函數(shù)

描述

服務(wù)器端套接字

s.bind()

綁定地址(host,port)到套接字, 在AF_INET下,以元組(host,port)的形式表示地址。

s.listen()

開始TCP監(jiān)聽。backlog指定在拒絕連接之前,操作系統(tǒng)可以掛起的最大連接數(shù)量。該值至少為1,大部分應(yīng)用程序設(shè)為5就可以了。

s.accept()

被動接受TCP客戶端連接,(阻塞式)等待連接的到來

客戶端套接字

s.connect()

主動初始化TCP服務(wù)器連接,。一般address的格式為元組(hostname,port),如果連接出錯,返回socket.error錯誤。

s.connect_ex()

connect()函數(shù)的擴展版本,出錯時返回出錯碼,而不是拋出異常

公共用途的套接字函數(shù)

s.recv()

接收TCP數(shù)據(jù),數(shù)據(jù)以字符串形式返回,bufsize指定要接收的最大數(shù)據(jù)量。flag提供有關(guān)消息的其他信息,通??梢院雎?。

s.send()

發(fā)送TCP數(shù)據(jù),將string中的數(shù)據(jù)發(fā)送到連接的套接字。返回值是要發(fā)送的字節(jié)數(shù)量,該數(shù)量可能小于string的字節(jié)大小。

s.sendall()

完整發(fā)送TCP數(shù)據(jù),完整發(fā)送TCP數(shù)據(jù)。將string中的數(shù)據(jù)發(fā)送到連接的套接字,但在返回之前會嘗試發(fā)送所有數(shù)據(jù)。成功返回None,失敗則拋出異常。

s.recvfrom()

接收UDP數(shù)據(jù),與recv()類似,但返回值是(data,address)。其中data是包含接收數(shù)據(jù)的字符串,address是發(fā)送數(shù)據(jù)的套接字地址。

s.sendto()

發(fā)送UDP數(shù)據(jù),將數(shù)據(jù)發(fā)送到套接字,address是形式為(ipaddr,port)的元組,指定遠程地址。返回值是發(fā)送的字節(jié)數(shù)。

s.close()

關(guān)閉套接字

s.getpeername()

返回連接套接字的遠程地址。返回值通常是元組(ipaddr,port)。

s.getsockname()

返回套接字自己的地址。通常是一個元組(ipaddr,port)

s.setsockopt(level,optname,value)

設(shè)置給定套接字選項的值。

s.getsockopt(level,optname[.buflen])

返回套接字選項的值。

s.settimeout(timeout)

設(shè)置套接字操作的超時期,timeout是一個浮點數(shù),單位是秒。值為None表示沒有超時期。一般,超時期應(yīng)該在剛創(chuàng)建套接字時設(shè)置,因為它們可能用于連接的操作(如connect())

s.gettimeout()

返回當(dāng)前超時期的值,單位是秒,如果沒有設(shè)置超時期,則返回None。

s.fileno()

返回套接字的文件描述符。

s.setblocking(flag)

如果flag為0,則將套接字設(shè)為非阻塞模式,否則將套接字設(shè)為阻塞模式(默認值)。非阻塞模式下,如果調(diào)用recv()沒有發(fā)現(xiàn)任何數(shù)據(jù),或send()調(diào)用無法立即發(fā)送數(shù)據(jù),那么將引起socket.error異常。

s.makefile()

創(chuàng)建一個與該套接字相關(guān)連的文件

Python Internet 模塊

以下是 Python 網(wǎng)絡(luò)編程的一些重要模塊:

協(xié)議

功能用處

端口號

Python 模塊

HTTP

網(wǎng)頁訪問

80

httplib, urllib, xmlrpclib

NNTP

閱讀和張貼新聞文章,俗稱為"帖子"

119

nntplib

FTP

文件傳輸

20

ftplib, urllib

SMTP

發(fā)送郵件

25

smtplib

POP3

接收郵件

110

poplib

IMAP4

獲取郵件

143

imaplib

Telnet

命令行

23

telnetlib

Gopher

信息查找

70

gopherlib, urllib

到此這篇關(guān)于Python中的socket網(wǎng)絡(luò)模塊介紹的文章就介紹到這了,更多相關(guān)Python socket內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用Dijkstra算法實現(xiàn)求解圖中最短路徑距離問題詳解

    Python使用Dijkstra算法實現(xiàn)求解圖中最短路徑距離問題詳解

    這篇文章主要介紹了Python使用Dijkstra算法實現(xiàn)求解圖中最短路徑距離問題,簡單描述了Dijkstra算法的原理并結(jié)合具體實例形式分析了Python使用Dijkstra算法實現(xiàn)求解圖中最短路徑距離的相關(guān)步驟與操作技巧,需要的朋友可以參考下
    2018-05-05
  • 解決matplotlib庫show()方法不顯示圖片的問題

    解決matplotlib庫show()方法不顯示圖片的問題

    今天小編就為大家分享一篇解決matplotlib庫show()方法不顯示圖片的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python urlencode和unquote函數(shù)使用實例解析

    Python urlencode和unquote函數(shù)使用實例解析

    這篇文章主要介紹了Python urlencode和unquote函數(shù)使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • python的變量與賦值詳細分析

    python的變量與賦值詳細分析

    這篇文章主要介紹了python的變量與賦值詳細分析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 一篇文章告訴你如何用Python控制Excel實現(xiàn)自動化辦公

    一篇文章告訴你如何用Python控制Excel實現(xiàn)自動化辦公

    這篇文章主要介紹了教你怎么用Python處理excel實現(xiàn)自動化辦公,文中有非常詳細的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-08-08
  • python二分法查找實例代碼

    python二分法查找實例代碼

    二分算法是一種效率比較高的查找算法,其輸入的是一個有序的元素列表,如果查找元素包含在列表中,二分查找返回其位置,否則返回NONE,下面這篇文章主要給大家介紹了關(guān)于python二分法查找的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Python實現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】

    Python實現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】

    這篇文章主要介紹了Python實現(xiàn)購物評論文本情感分析操作,結(jié)合實例形式分析了Python使用中文文本挖掘庫snownlp操作中文文本進行感情分析的相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • Python3.6簡單的操作Mysql數(shù)據(jù)庫的三個實例

    Python3.6簡單的操作Mysql數(shù)據(jù)庫的三個實例

    今天小編就為大家分享一篇關(guān)于Python3.6簡單的操作Mysql數(shù)據(jù)庫的三個實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python flask項目入門教程

    Python flask項目入門教程

    flask 是一門使用 python 編寫的后端框架,這篇文章主要介紹了Python flask項目入門教程,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Python制作簡單的網(wǎng)頁爬蟲

    Python制作簡單的網(wǎng)頁爬蟲

    自己寫的一個爬蟲,模仿了python核心編程書里的程序,有詳細的注釋。 是我一個理解學(xué)習(xí)的過程吧。 有需要的小伙伴可以參考下
    2015-11-11

最新評論

夏邑县| 奉新县| 清徐县| 湖南省| 新沂市| 石阡县| 宝坻区| 黔南| 望奎县| 禹州市| 广东省| 施甸县| 华阴市| 区。| 论坛| 阜康市| 比如县| 宜州市| 汶上县| 唐河县| 抚州市| 邯郸县| 阿拉尔市| 通道| 乐都县| 云阳县| 电白县| 枣阳市| 迁安市| 齐河县| 中西区| 马尔康县| 廉江市| 偃师市| 天祝| 汶川县| 新巴尔虎右旗| 米易县| 马公市| 蕉岭县| 日土县|