Python Socket編程實現網絡編程
對于有經驗的開發人員來說,掌握的編程語言應該是不少的。在這些編程語言中,網絡編程的應用時必不可少的。其中Python也是這樣的編程語言。我們今天將會在這里為大家詳細介紹一下Python Socket編程再網絡編程中的應用。#t#
Socket:套接字
套接字好比電話的插口,主機和端口就好比區號和電話號碼,主機:是你要連接到哪里,端口:是從那個口子連過去,和大多數語言一樣,Python 支持面向連接和無連接。
面向連接即需要先連接然后通訊, 面向連接主要協議就是傳輸控制協議(tcp),要創建tcp套接字時需要指定套接字類型為 SOCK_STRAM,表達了他作為流套接字的特點。
無連接,顧名思義無需建立連接就可以進行通訊,這時數據到達順序、可靠性就無法保證了。實現這種連接的協議就是用戶數據包協議(udp)。創建UDP時需要指定套接字類型為 SOCK_DGRAM。
創建 Socket:
創建Python Socket編程用到 Socket模塊函數,語法為:
- Socket(Socket_family,Socket_type,protocol=0)
Socket_family不是 AF_VNIX 就是 AF_INET,通常使用的是AF_INET(不明白可以去查些資料),Socket_type可以是 SOCK_STREAM 或者 SOCK_DGRAM,protocol一般不填,就默認為0
創建一個TCP/IP的套接字:
- tcpSock = Socket(Socket.AF_INET,Socket.SOCK_STRAM)
創建一個UDP/IP的套接字:
- udpSock= Socket(Socket.AF_INET,Socket.SOCK_DGRAM)
創建好套接字以后,我們需要使用套接字的內建方法,常用的方法:
服務器端
- s.bind() 綁定地址(主機,端口)到套接字
- s.listen() 開始監聽
- s.accept() 被動接受 tcp客戶端連接(阻塞式),等待連接的到來
客戶端
- s.connet() 主動初始化tcp服務器連接
- s.connet_ex() connet擴展版本,出錯時返回錯誤代碼,不拋出異常
- s.recv() 接受tcp數據
- s.send() 發送數據
- s.close() 關閉套接字
常用的Python Socket編程方法如上,還有一些方法大家可以查詢些資料。