這是用來快速學習 Python Socket 套接字編程的指南和教程。Python 的 Socket 編程跟 C 語言很像。
Python 官方關于 Socket 的函數請看 http://docs.python.org/library/socket.html
基本上,Socket 是任何一種計算機網絡通訊中最基礎的內容。例如當你在瀏覽器地址欄中輸入 www.jb51.net 時,你會打開一個套接字,然后連接到 www.jb51.net 并讀取響應的頁面然后然后顯示出來。而其他一些聊天客戶端如 gtalk 和 skype 也是類似。任何網絡通訊都是通過 Socket 來完成的。
寫在開頭
本教程假設你已經有一些基本的 Python 編程的知識。
讓我們開始 Socket 編程吧。
創建 Socket
首先要做的就是創建一個 Socket,socket 的 socket 函數可以實現,代碼如下:
代碼如下:
#Socket client example in python
import socket #for sockets
#create an AF_INET, STREAM socket (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket Created'
函數 socket.socket 創建了一個 Socket,并返回 Socket 的描述符可用于其他 Socket 相關的函數。
上述代碼使用了下面兩個屬性來創建 Socket:
地址簇 : AF_INET (IPv4)
類型: SOCK_STREAM (使用 TCP 傳輸控制協議)
錯誤處理
如果 socket 函數失敗了,python 將拋出一個名為 socket.error 的異常,這個異常必須予以處理:
代碼如下:
#handling errors in python socket programs
import socket #for sockets
import sys #for exit
try:
#create an AF_INET, STREAM socket (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]
sys.exit();
print 'Socket Created'
好了,假設你已經成功創建了 Socket,下一步該做什么呢?接下來我們將使用這個 Socket 來連接到服務器。
注意:
與 SOCK_STREAM 相對應的其他類型是 SOCK_DGRAM 用于 UDP 通訊協議,UDP 通訊是非連接 Socket,在這篇文章中我們只討論 SOCK_STREAM ,或者叫 TCP 。
連接到服務器
連接到服務器需要服務器地址和端口號,這里使用的是 www.jb51.net 和 80 端口。
首先獲取遠程主機的 IP 地址
連接到遠程主機之前,我們需要知道它的 IP 地址,在 Python 中,獲取 IP 地址是很簡單的:
代碼如下:
import socket #for sockets
import sys #for exit
try:
#create an AF_INET, STREAM socket (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]
新聞熱點
疑難解答