Python 的 Socket 編程,學好python的必經之路!

在這裡為大家推薦一個我的python群:58937142 裡面新手資料,框架,爬蟲。web都有,都是可以免費獲取的,還有大牛解答各種難題,不失為是一個學習的好地方,小編在這裡邀請大家加入我的大家庭。歡迎你的到來。Socket是網路應用的基礎。而Python使得網路socket編程入門變得超級簡單。在這篇簡介裡面我們將創建一個簡單伺服器,用於接受和相應客戶端程序的請求。

由於本人最近對 Linux Containers 有點痴迷,因此我們也將在伺服器中實現2個容器。同時在容器中我們在幾秒鐘內就能創建其他一些主機,這就能非常簡單的模擬出一個網路。

我使用的是Ubuntu14.04. 然後用root用戶運行下面的命令就可以創建好2個容器了。

Advertisements

lxc-create -t download -n pyServer

啟動伺服器

現在我們創建好了容器,先進入到伺服器容器中並啟動我們的伺服器程序。用root許可權運行下面這條命令就可以啟動容器了:lxc-start -n pyServer -d, 這將啟動容器作為我們的守護進程。讓我們先重新連接進入這個容器。這裡我喜歡使用screen,這樣我可以很方便的進出到容器中。先創建screen會話: screen -dRR pyServer,需要重新連接到容器中的話,可以用命令:lxc-attach -n pyServer

當我們進入到容器中后,我們需要安裝python並啟動伺服器。

apt-get install python

打開vim(或你個人偏好的文本編輯器),敲入以下python代碼。

Advertisements

from socket import *

這段代碼很直觀。我們創建了一個serverSocket監聽12000埠。當接收到請求的時候(包含用戶名)就會回復一條信息。啟動伺服器的命令是 python pyServer.py 如果一切正常的話,你應該可以看到這樣一條信息 This server is ready to rock and roll! 用Ctrl+a 和Ctrl+d退出容器(還有screen會話)

現在伺服器端已經準備就緒,改讓客戶端跑起來了。在開始前先查一下伺服器容器的IP

lxc-start -n pyClient -d

在vim裡面敲入以下代碼創建一個pyClient.py文件。

from socket import *# Replace the IP address in serverName with the IP of your container that you grabbed previously.serverName = '10.0.3.211'serverPort = 12000clientSocket = socket(AF_INET, SOCK_DGRAM)

這段代碼也很直觀。要求用戶輸入用戶名,然後發送到伺服器,最後列印出伺服器響應信息。

現在你可以自己來了!保存文件,然後執行python程序 python pyClient.py .在你輸入你的名字並按下回車后,就應該可以收到一條來自伺服器的響應信息。

這是一個非常簡單的例子,但我們很容易就發現,可以在這些基礎的代碼上面做一些拓展就可以實現很多更有趣也更複雜的應用。我們還可以利用LXC強大的功能但簡便的操作模擬出一個更大的網路從而實現一個分散式應用。

Advertisements

你可能會喜歡