您好,登錄后才能下訂單哦!
本篇內容主要講解“python之怎么使用socket”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python之怎么使用socket”吧!
1)OSI模型包括應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層這7層。常用的主要是應用層和傳輸層,其余就不一一介紹。
2)應用層:網絡服務和一些終端的應用。比如HTTP協議、FTP協議
3)傳輸層:定義了一些傳輸數據的協議和端口號。如UDP協議、TCP協議
1)IP地址:表示網絡上一臺 獨立的主機 ; IP地址=網絡地址+主機地址。其中特殊的IP地址:127.0.0.1(本地回環地址),表示本機
2)端口號:用于標識進程的邏輯地址;不同的進程都有不同的端口標識。
3)傳輸協議:通訊的規則。
①UDP:用戶數據報協議。面向無連接,傳輸數據之前源端和目的端不需要建立連接。如實時在線聊天、視頻會議等
②TCP:傳輸控制協議。面向連接,傳輸數據之前需要建立連接。在連接過程中進行大量數據傳輸,通過“三次握手”的方式完成連接,是安全可靠協議。傳輸速度慢效率低
1)TCP建立連接時要傳輸三個數據包,俗稱三次握手(Three-way Handshaking)通俗的理解為:
套接字A:“你好,套接字B,我這里有數據要傳送給你,建立連接吧。”套接字B:“好的,我這邊已準備就緒。”套接字A:“謝謝你受理我的請求。”
2)三次握手完成,TCP客戶端和服務器端成功地建立連接,可以開始傳輸數據了。
1)創建服務端socket對象。對象創建時,需要綁定它的IP地址(IPv4或Ipv6)和協議(TCP或UDP)。 bind()綁定本機IP地址和端口號,listen()啟動監聽等待客戶端發送的請求。至此服務端建立完成。
2)創建服務端socket對象。根據服務端IP地址和端口號試圖連接服務端socket端。
3)服務端監聽接收accept()到客戶端發送的請求,建立與客戶端的連接connect()。
4)連接建立后,客戶端可以發送send()數據到socket對象中,服務端可以接收recv()到客戶端發送的數據。
5)服務端處理數據后,可以向socket對象返回一個send()處理結果,客戶端讀取recv()到這個返回結
6)客戶端關閉close()連接,客戶端釋放當前占用的客戶端端口號
7)服務端收到客戶端關閉消息后,關閉與客戶端的連接
1)概述:又稱"套接字",應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求,使主機間或者一臺計算機上的進程間可以通訊。
2)方法分類:服務端套接字、客戶端套接字、公共用途套接字
①服務端:bind、listen、accept
②客戶端:connet等
③公共端:recv、send、sendall、close等
3)注意事項:socket進入阻塞狀態,即 accept()方法一直等到客戶端返回連接信息后才返回,開始接收下一個客戶端連接請求
發送數據:通過bytes類型進行傳輸,需要通過bytes(sendData)轉換
接收數據:通過str類型接收,需要通過str(client_data)轉換
accept():接受并建立與客戶端的連接,程序在此處開始阻塞,只有到客戶端連接起來。
#服務端代碼 import socket sk=socket.socket()#創建服務端socket對象 ip_port=('127.0.0.1',13008) sk.bind(ip_port)#綁定IP地址和端口號 sk.listen(5)#開始監聽是否有請求:同時最多允許有5個連接 print('等待客戶端的連接')#釋放信號 coon,addr=sk.accept()#連接成功后會返回一個新的套接字和客戶端地址 print('客戶端新的連接:',addr) client_data=coon.recv(1024)#接收數據:一次性接收1024字節 print(str(client_data,encoding='utf8')) sendData=input('請輸入>>>') coon.sendall(bytes(sendData,encoding='utf8'))#發送數據 coon.close()#關閉資源 sk.close()
#客戶端代碼 import socket sk=socket.socket()#創建客戶端socket對象 ip_port=('127.0.0.1',13008) sk.connect(ip_port)#發起連接 sendData=input('請輸入>>>') sk.sendall(bytes(sendData,encoding='utf8'))#發送數據:通過bytes類型進行傳輸 sever_data=sk.recv(1024)#接收數據:一次性接收1024字節 print(str(sever_data,encoding='utf8'))#接收數據:通過str類型來接收 sk.close()
到此,相信大家對“python之怎么使用socket”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。