1. 程式人生 > >python網絡編程(一)

python網絡編程(一)

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網絡編程(一)