欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的socket網絡模塊介紹

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

前言:

Python3 提供了兩個級別訪問的網絡服務:

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

Socket

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

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

socket.socket ( family ,type ,proto)

參數;

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

服務端(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) #設置最大連接數,超過后排隊
clientsock,addr=server.accept() #建立與客戶端的連接,返回(socket object, address info)元組對象
print("addr=%s %s"%(addr,type(addr)))
print("客戶端ip地址為:%s 端口號為:%s"%addr)
clientsock.send("歡迎來到服務端".encode('utf-8')) #python3要求發(fā)送byte型的數據,所以我們將它以utf-8的形式轉換為bytes類型的
msg=clientsock.recv(1024) #接收客戶端發(fā)來的消息,msg2為bytes類型的數據
print(msg.decode('utf-8')) #我們將bytes類型數據轉換成str字符型的數據,以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函數接收元組型數據
msg=client.recv(1024) #接收從服務器發(fā)來的消息,為bytes類型的數據,大小為1024字節(jié)的緩沖區(qū)
print(msg.decode('utf-8')) #我們轉化為str字符串類型的數據,以utf-8的形式
client.send("客戶端到此一游".encode('utf-8')) #python3要求發(fā)送bytes類型的數據,所以我們得將它轉換
client.close()

Python中的socket網絡模塊_數據

Python中的socket網絡模塊_套接字_02

socket中的一些常用方法

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

Socket 對象(內建)方法

函數

描述

服務器端套接字

s.bind()

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

s.listen()

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

s.accept()

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

客戶端套接字

s.connect()

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

s.connect_ex()

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

公共用途的套接字函數

s.recv()

接收TCP數據,數據以字符串形式返回,bufsize指定要接收的最大數據量。flag提供有關消息的其他信息,通常可以忽略。

s.send()

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

s.sendall()

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

s.recvfrom()

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

s.sendto()

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

s.close()

關閉套接字

s.getpeername()

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

s.getsockname()

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

s.setsockopt(level,optname,value)

設置給定套接字選項的值。

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

返回套接字選項的值。

s.settimeout(timeout)

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

s.gettimeout()

返回當前超時期的值,單位是秒,如果沒有設置超時期,則返回None。

s.fileno()

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

s.setblocking(flag)

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

s.makefile()

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

Python Internet 模塊

以下是 Python 網絡編程的一些重要模塊:

協議

功能用處

端口號

Python 模塊

HTTP

網頁訪問

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

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

相關文章

  • python?文件讀寫操作示例源碼解讀

    python?文件讀寫操作示例源碼解讀

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

    Python協程的2種實現方式分享

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

    淺談python 讀excel數值為浮點型的問題

    今天小編就為大家分享一篇淺談python 讀excel數值為浮點型的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • tensorflow識別自己手寫數字

    tensorflow識別自己手寫數字

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

    pycharm 2018 激活碼及破解補丁激活方式

    這篇文章主要介紹了pycharm 2018 激活碼及破解補丁激活方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • python求素數示例分享

    python求素數示例分享

    這篇文章主要介紹了python求素數示例,打印出素數列表,需要的朋友可以參考下
    2014-02-02
  • python 模塊導入問題匯總

    python 模塊導入問題匯總

    在本篇文章里小編給大家整理的是一篇關于python 模塊導入問題匯總內容,有需要的朋友們可以學習參考下。
    2021-02-02
  • Python pandas庫中的isnull()詳解

    Python pandas庫中的isnull()詳解

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

    Django ORM數據庫操作處理全面指南

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

    Python多線程編程入門詳解

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

最新評論