亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言:

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

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

Socket

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

Python 中,我們使用 socket 模塊的 socket 函數(shù)來(lái)創(chuàng)建一個(gè) socket 對(duì)象。語(yǔ)法格式如下:

socket.socket ( family ,type ,proto)

參數(shù);

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

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

import socket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #創(chuàng)建socket對(duì)象,面向連接的
server.bind(("127.0.0.1",9999)) #綁定主機(jī)名和端口號(hào)
server.listen(10) #設(shè)置最大連接數(shù),超過(guò)后排隊(duì)
clientsock,addr=server.accept() #建立與客戶端的連接,返回(socket object, address info)元組對(duì)象
print("addr=%s %s"%(addr,type(addr)))
print("客戶端ip地址為:%s 端口號(hào)為:%s"%addr)
clientsock.send("歡迎來(lái)到服務(wù)端".encode('utf-8')) #python3要求發(fā)送byte型的數(shù)據(jù),所以我們將它以u(píng)tf-8的形式轉(zhuǎn)換為bytes類型的
msg=clientsock.recv(1024) #接收客戶端發(fā)來(lái)的消息,msg2為bytes類型的數(shù)據(jù)
print(msg.decode('utf-8')) #我們將bytes類型數(shù)據(jù)轉(zhuǎn)換成str字符型的數(shù)據(jù),以u(píng)tf-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ā)來(lái)的消息,為bytes類型的數(shù)據(jù),大小為1024字節(jié)的緩沖區(qū)
print(msg.decode('utf-8')) #我們轉(zhuǎn)化為str字符串類型的數(shù)據(jù),以u(píng)tf-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() #獲得本機(jī)的主機(jī)名,返回str型數(shù)據(jù)
print(a,type(a))
b=socket.gethostbyname(a) #根據(jù)主機(jī)名獲取ip地址,返回str型數(shù)據(jù),也可以是網(wǎng)絡(luò)上的域名
print(b,type(b))
c=socket.gethostbyaddr(b) #通過(guò)ip獲得該主機(jī)的一些信息,返回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 對(duì)象(內(nèi)建)方法

函數(shù)

描述

服務(wù)器端套接字

s.bind()

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

s.listen()

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

s.accept()

被動(dòng)接受TCP客戶端連接,(阻塞式)等待連接的到來(lái)

客戶端套接字

s.connect()

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

s.connect_ex()

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

公共用途的套接字函數(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ā)送到連接的套接字,但在返回之前會(huì)嘗試發(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)的元組,指定遠(yuǎn)程地址。返回值是發(fā)送的字節(jié)數(shù)。

s.close()

關(guān)閉套接字

s.getpeername()

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

s.getsockname()

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

s.setsockopt(level,optname,value)

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

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

返回套接字選項(xiàng)的值。

s.settimeout(timeout)

設(shè)置套接字操作的超時(shí)期,timeout是一個(gè)浮點(diǎn)數(shù),單位是秒。值為None表示沒(méi)有超時(shí)期。一般,超時(shí)期應(yīng)該在剛創(chuàng)建套接字時(shí)設(shè)置,因?yàn)樗鼈兛赡苡糜谶B接的操作(如connect())

s.gettimeout()

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

s.fileno()

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

s.setblocking(flag)

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

s.makefile()

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

Python Internet 模塊

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

協(xié)議

功能用處

端口號(hào)

Python 模塊

HTTP

網(wǎng)頁(yè)訪問(wèn)

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?文件讀寫(xiě)操作示例源碼解讀

    python?文件讀寫(xiě)操作示例源碼解讀

    這篇文章主要為大家介紹了python?文件讀寫(xiě)操作示例源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Python協(xié)程的2種實(shí)現(xiàn)方式分享

    Python協(xié)程的2種實(shí)現(xiàn)方式分享

    在?Python?中,協(xié)程(Coroutine)是一種輕量級(jí)的并發(fā)編程方式,可以通過(guò)協(xié)作式多任務(wù)來(lái)實(shí)現(xiàn)高效的并發(fā)執(zhí)行。本文主要介紹了Python實(shí)現(xiàn)協(xié)程的2種方式,希望對(duì)大家有所幫助
    2023-04-04
  • 淺談python 讀excel數(shù)值為浮點(diǎn)型的問(wèn)題

    淺談python 讀excel數(shù)值為浮點(diǎn)型的問(wèn)題

    今天小編就為大家分享一篇淺談python 讀excel數(shù)值為浮點(diǎn)型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • tensorflow識(shí)別自己手寫(xiě)數(shù)字

    tensorflow識(shí)別自己手寫(xiě)數(shù)字

    這篇文章主要為大家詳細(xì)介紹了tensorflow識(shí)別自己手寫(xiě)數(shù)字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • pycharm 2018 激活碼及破解補(bǔ)丁激活方式

    pycharm 2018 激活碼及破解補(bǔ)丁激活方式

    這篇文章主要介紹了pycharm 2018 激活碼及破解補(bǔ)丁激活方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python求素?cái)?shù)示例分享

    python求素?cái)?shù)示例分享

    這篇文章主要介紹了python求素?cái)?shù)示例,打印出素?cái)?shù)列表,需要的朋友可以參考下
    2014-02-02
  • python 模塊導(dǎo)入問(wèn)題匯總

    python 模塊導(dǎo)入問(wèn)題匯總

    在本篇文章里小編給大家整理的是一篇關(guān)于python 模塊導(dǎo)入問(wèn)題匯總內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Python pandas庫(kù)中的isnull()詳解

    Python pandas庫(kù)中的isnull()詳解

    今天小編就為大家分享一篇Python pandas庫(kù)中的isnull()詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    本文深度探討Django ORM的概念、基礎(chǔ)使用、進(jìn)階操作以及詳細(xì)解析在實(shí)際使用中如何處理數(shù)據(jù)庫(kù)操作,同時(shí),我們還討論了模型深入理解,如何進(jìn)行CRUD操作,并且深化理解到數(shù)據(jù)庫(kù)遷移等高級(jí)主題
    2023-09-09
  • Python多線程編程入門(mén)詳解

    Python多線程編程入門(mén)詳解

    這篇文章主要為大家介紹了Python多線程編程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12

最新評(píng)論