Python3 網絡編程

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

低級別的網絡服務支持基本的 Socket,它提供了標準的 BSD Sockets API,可以訪問底層操作系統Socket接口的全部方法。

高級別的網絡服務模塊 SocketServer, 它提供了服務器中心類,可以簡化網絡服務器的開發。

什麼是 Socket?

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

socket()函數

Python 中,我們用 socket()函數來創建套接字,語法格式如下:

socket.socket([family[, type[, proto]]])
參數

family: 套接字家族可以使AF_UNIX或者AF_INET

type: 套接字類型可以根據是面向連接的還是非連接分爲SOCK_STREAM或SOCK_DGRAM

protocol: 一般不填默認爲0.

Socket 對象(內建)方法

Python3 網絡編程

Python3 網絡編程

簡單實例

服務端

我們使用 socket 模塊的 socket 函數來創建一個 socket 對象。socket 對象可以通過調用其他函數來設置一個 socket 服務。

現在我們可以通過調用 bind(hostname, port) 函數來指定服務的 port(端口)。

接着,我們調用 socket 對象的 accept 方法。該方法等待客戶端的連接,並返回 connection 對象,表示已連接到客戶端。

完整代碼如下:

#!/usr/bin/python3

文件名:server.py

導入 socket、sys 模塊

import socket
import sys

創建 socket 對象

serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)

獲取本地主機名

host = socket.gethostname()

port = 9999

綁定端口號

serversocket.bind((host, port))

設置最大連接數,超過後排隊

serversocket.listen(5)while True:

建立客戶端連接

clientsocket,addr = serversocket.accept()      

print("連接地址: %s" % str(addr))

msg='歡迎訪問菜鳥教程!'+ "\r\n"
clientsocket.send(msg.encode('utf-8'))
clientsocket.close()

客戶端

接下來我們寫一個簡單的客戶端實例連接到以上創建的服務。端口號爲 9999。

socket.connect(hosname, port ) 方法打開一個 TCP 連接到主機爲 hostname 端口爲 port 的服務商。連接後我們就可以從服務端獲取數據,記住,操作完成後需要關閉連接。

完整代碼如下:

#!/usr/bin/python3

文件名:client.py

導入 socket、sys 模塊

import socket
import sys

創建 socket 對象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

獲取本地主機名

host = socket.gethostname()

設置端口號

port = 9999

連接服務,指定主機和端口

s.connect((host, port))

接收小於 1024 字節的數據

msg = s.recv(1024)

s.close()

print (msg.decode('utf-8'))
現在我們打開兩個終端,第一個終端執行 server.py 文件:

$ python3 server.py
第二個終端執行 client.py 文件:

$ python3 client.py
歡迎訪問菜鳥教程!
這時我們再打開第一個終端,就會看到有以下信息輸出:

連接地址: ('192.168.0.118', 33397)
Python Internet 模塊

以下列出了 Python 網絡編程的一些重要模塊

Python3 網絡編程

好了,本文就給大夥分享到這裏,文末分享一波福利

Python3 網絡編程

Python3 網絡編程

獲取方式:加python羣 839383765 即可獲取!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章