python網絡編程(一)
阿新 • • 發佈:2018-05-14
unix imp p地址 mail 傳輸層 很多 一個 說明 reat
socket簡介
1.本地的進程間通信(IPC)有很多種方式,例如
- 隊列
- 同步(互斥鎖、條件變量等)
以上通信方式都是在一臺機器上不同進程之間的通信方式,那麽問題來了
網絡中進程之間如何通信?
2. 網絡中進程之間如何通信
首要解決的問題是如何唯一標識一個進程,否則通信無從談起!
在本地可以通過進程PID來唯一標識一個進程,但是在網絡中這是行不通的。
其實TCP/IP協議族已經幫我們解決了這個問題,網絡層的“ip地址”可以唯一標識網絡中的主機,而傳輸層的“協議+端口”可以唯一標識主機中的應用程序(進程)。
這樣利用ip地址,協議,端口
就可以標識網絡的進程了,網絡中的進程通信就可以利用這個標誌與其它進程進行交互
3. 什麽是socket
socket(簡稱 套接字
) 是進程間通信的一種方式,它與其他進程間通信的一個主要不同是:
它能實現不同主機間的進程間通信,我們網絡上各種各樣的服務大多都是基於 Socket 來完成通信的
例如我們每天瀏覽網頁、QQ 聊天、收發 email 等等
4. 創建socket
在 Python 中 使用socket 模塊的函數 socket 就可以完成:
socket.socket(AddressFamily, Type)
說明:
函數 socket.socket 創建一個 socket,返回該 socket 的描述符,該函數帶有兩個參數:
- Address Family:可以選擇 AF_INET(用於 Internet 進程間通信) 或者 AF_UNIX(用於同一臺機器進程間通信),實際工作中常用AF_INET
- Type:套接字類型,可以是 SOCK_STREAM(流式套接字,主要用於 TCP 協議)或者 SOCK_DGRAM(數據報套接字,主要用於 UDP 協議)
創建一個tcp socket(tcp套接字)
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print ‘Socket Created‘
創建一個udp socket(udp套接字)
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print ‘Socket Created‘
python網絡編程(一)