Python中得socket網絡模塊介紹

    目錄

    前言:

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

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

    Socket

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

    Python 中,我們使用 socket 模塊得 socket 函數來創建一個 socket 對象。語法格式如下:

    socket.socket ( family ,type ,proto)

    參數;

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

    服務端(server.py)

    import socketserver=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #創建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要求發送byte型得數據,所以我們將它以utf-8得形式轉換為bytes類型得msg=clientsock.recv(1024) #接收客戶端發來得消息,msg2為bytes類型得數據print(msg.decode('utf-8')) #我們將bytes類型數據轉換成str字符型得數據,以utf-8得形式clientsock.close()

    客戶端(client.py)

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

    Python中得socket網絡模塊_數據

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

    socket中得一些常用方法

    import socketa=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監聽。backlog指定在拒絕連接之前,操作系統可以掛起得最大連接數量。該值至少為1,大部分應用程序設為5就可以了。

    s.accept()

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

    客戶端套接字

    s.connect()

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

    s.connect_ex()

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

    公共用途得套接字函數

    s.recv()

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

    s.send()

    發送TCP數據,將string中得數據發送到連接得套接字。返回值是要發送得字節數量,該數量可能小于string得字節大小。

    s.sendall()

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

    s.recvfrom()

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

    s.sendto()

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

    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表示沒有超時期。一般,超時期應該在剛創建套接字時設置,因為它們可能用于連接得操作(如connect())

    s.gettimeout()

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

    s.fileno()

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

    s.setblocking(flag)

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

    s.makefile()

    創建一個與該套接字相關連得文件

    Python Internet 模塊

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

    協議

    功能用處

    端口號

    Python 模塊

    HTTP

    網頁訪問

    80

    httplib, urllib, xmlrpclib

    NNTP

    閱讀和張貼新聞內容,俗稱為"帖子"

    119

    nntplib

    FTP

    文件傳輸

    20

    ftplib, urllib

    SMTP

    發送郵件

    25

    smtplib

    POP3

    接收郵件

    110

    poplib

    IMAP4

    獲取郵件

    143

    imaplib

    Telnet

    命令行

    23

    telnetlib

    Gopher

    信息查找

    70

    gopherlib, urllib

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

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 久久精品国产一区二区电影| 亚洲AV无码一区二区三区网址| 国产一区在线视频| 一区二区三区无码高清| 99精品一区二区三区| 亚洲欧洲∨国产一区二区三区| 亚洲AV福利天堂一区二区三| 国产精品综合一区二区| 国产日韩精品视频一区二区三区 | 精品视频在线观看一区二区三区| 中文字幕一区二区三区在线播放| 国产人妖在线观看一区二区 | 韩日午夜在线资源一区二区| 亚洲变态另类一区二区三区| 国产一区二区在线看| 国产丝袜视频一区二区三区| 国产日韩精品一区二区三区在线| 一区二区在线视频观看| 日韩一区二区三区视频| 久久婷婷色综合一区二区| 国产丝袜一区二区三区在线观看| 国产成人高清亚洲一区91| 亚洲A∨精品一区二区三区 | 国产精品盗摄一区二区在线| 国产一区二区精品久久91 | 99精品一区二区三区无码吞精| 久久国产高清一区二区三区| 中文字幕在线观看一区二区三区| 国产亚洲无线码一区二区| 亚洲日韩精品国产一区二区三区 | 亚洲熟妇AV一区二区三区宅男| 日韩中文字幕一区| 午夜AV内射一区二区三区红桃视| 国产精品女同一区二区| 亚洲中文字幕无码一区| 麻豆精品人妻一区二区三区蜜桃| 一区二区三区亚洲视频| 亚洲欧美日韩中文字幕在线一区 | 中文字幕人妻无码一区二区三区 | 香蕉久久一区二区不卡无毒影院 | 精品国产免费观看一区|