中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python3中利用Socket實現通信

發布時間:2021-04-14 17:33:43 來源:億速云 閱讀:317 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在python3中利用Socket實現通信,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

服務器上socket編寫步驟:

1.調用socket函數創建socket對象,如:

socket_server = socket.socket(family,type)

family參數代表地址家族,可為AF_INET(Internet通信)或AF_UNIX(同一臺機器上進程間通信)。

type參數代表套接字類型,可為SOCK_STREAM(流套接字)和SOCK_DGRAM(數據報套接字)。

2.使用socket對象的bind方法,將socket綁定到指定地址,如:

socket_server.bind(address)

由AF_INET所創建的套接字,address必須是一組雙元素元組,格式為(host,port)。

3.使用socket對象的listen方法接受連接請求,如:

socket_server.listen(backlog)

backlog指定最多允許多少個客戶連接到服務器,至少為1,如果達到設定值,則拒絕接受新請求。

4.服務器套接字通過socket對象的accept方法等待客戶請求一個連接,如:

connection,address = socket_server.accept()

運行accept方法后,socket進入“waiting”狀態,等待客戶請求連接。當客戶請求連接時,accept方法建立連接并返回服務器,返回一組含兩個元素的元組(connection,address)。 connection是新的socket對象,服務器必須通過這個新的對象與客戶端進行通信 ;address是客戶端的Internet地址。

5.處理階段,服務器和客戶端通過“send”和“recv”方法通信:

服務器調用send,并采用 二進制   形式向客戶發送信息。send方法返回已發送的字符個數。

服務器使用recv方法從客戶端接受信息,調用recv時,服務器必須指定一個整數來表示可通過本次方法調用來接受的最大數據量。recv方法在接收數據時會進入“blocked”狀態,最后返回一個字符串,它表示收到的數據。如果發送數據量超過recv所允許,數據會被截斷。多余的數據將緩沖到接收端。以后調用recv時,多余的數據會從緩沖區刪除。

6.傳輸結束,調用socket對象的close方法關閉連接,如:

connection.close()

socket_server.close()

注意:這里先關閉accept創建的新socket(connection)然后關閉服務器端socket(socket_server)

客戶端上socket編寫步驟:

1.創建一個socket以連接服務器,如:

socket_client = socket.socket(family,type)

2.使用connect方法連接服務器,對于AF_INET而言鏈接格式如:

socket_client.connect((host,port))

host代表主服務器主機名或IP,port為服務器進程所綁定的端口號。

3.處理階段,客戶端和服務器端通過send與recv方法進行通信 4.傳輸結束,調用close方法關閉連接,如:

socket_client.close()

注意這里的socket_client是第一步創建的對象,而服務器端使用的是accept創建的新socket(connection)

關于TCP的三次握手建立連接和四次揮手斷開連接這里不做敘述(徹底講解我功夫不到家,不敢亂說),把圖轉來大家看一下(這個感覺很基礎, 但很重要):

怎么在python3中利用Socket實現通信

三次握手

怎么在python3中利用Socket實現通信

四次揮手

程序如下:

服務器端:

怎么在python3中利用Socket實現通信

環境與服務器配置信息

怎么在python3中利用Socket實現通信

接收文件方法

怎么在python3中利用Socket實現通信

發送文件方法

怎么在python3中利用Socket實現通信

處理命令1(接收、發送)方法

怎么在python3中利用Socket實現通信

處理命令2(顯示可下載文件)方法

怎么在python3中利用Socket實現通信

服務器端運行主體

客戶端:

怎么在python3中利用Socket實現通信

環境與服務器配置

怎么在python3中利用Socket實現通信

接收文件方法

怎么在python3中利用Socket實現通信

發送文件方法

怎么在python3中利用Socket實現通信

確認服務器端消息方法

怎么在python3中利用Socket實現通信

處理命令1(接收、發送)方法

怎么在python3中利用Socket實現通信

處理命令2(顯示可下載文件)方法

怎么在python3中利用Socket實現通信

客戶端運行主體

運行說明:

1.首先建立server.py和client.py文件,并分別置于兩個不同的位置,如圖:

怎么在python3中利用Socket實現通信

Server文件夾及其py文件

怎么在python3中利用Socket實現通信

Client文件夾及其py文件

在Server文件夾下放一個或多個文件用于下載(我這里是4個不同類型的文件以供下文dir指令調用)

在Client文件下放一個或多個文件用于上傳(我這里是一個word文本)

2.在Server目錄下運行server.py,等待客戶端發送連接請求:

怎么在python3中利用Socket實現通信

服務器端等待連接請求

3.在Client目錄下運行client.py,向服務器端發送連接請求:

怎么在python3中利用Socket實現通信

客戶端發送請求 & 服務器端連接成功

注意:先啟動服務器,再啟動客戶端,這個為什么不用多說吧?

4.在客戶端輸入“dir”指令,查看可下載目錄文件:

怎么在python3中利用Socket實現通信

“dir”指令

注:這里我用“\t“即制表符來控制顯示格式,但不知道為啥第一個文件后會自動換行,暫且放著不去管它(不影響通信功能)

5.在客戶端輸入“get”指令,下載服務器中指定文件:

怎么在python3中利用Socket實現通信

“get 射頻仿真.pptx“指令

怎么在python3中利用Socket實現通信

“射頻仿真.pptx”下載成功

6.在客戶端輸入“put”指令,上傳指定文件到服務器:

怎么在python3中利用Socket實現通信

“put 天線15.doc”指令

怎么在python3中利用Socket實現通信

“天線15.doc”上傳成功

7.在客戶端輸入“close”指令,關閉連接,服務器進入監聽狀態:

怎么在python3中利用Socket實現通信

上述就是小編為大家分享的怎么在python3中利用Socket實現通信了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

礼泉县| 婺源县| 深州市| 灌南县| 三明市| 仪征市| 太仆寺旗| 丰台区| 务川| 新津县| 开化县| 墨江| 库伦旗| 若尔盖县| 新河县| 武宁县| 连州市| 延长县| 华池县| 绥德县| 都江堰市| 治多县| 金昌市| 乌拉特后旗| 彩票| 涞水县| 从江县| 定陶县| 大石桥市| 井陉县| 巴青县| 息烽县| 海城市| 扶风县| 华容县| 牡丹江市| 渭南市| 富锦市| 普格县| 武清区| 横峰县|