網頁設計

當前位置 /首頁/設計製作/網頁設計/列表

Python的Socket 程式設計

文章最初發布的時候標題是“Python的WebSocket程式設計”,坦白來說有點文不對題。我們在這裡打算討論的僅僅是常規的socket程式設計。儘管 Web Socket 和常規sockets有點很相似,但又不是同一個東西。那我還是希望這篇文章對你們有點幫助。

Python的Socket 程式設計

Socket是網路應用的基礎。而Python使得網路socket程式設計入門變得超級簡單。在這篇簡介裡面我們將建立一個簡單伺服器,用於接受和相應客戶端程式的請求。

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

  建立容器

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

程式碼如下:

lxc-create -t download -n pyServer

# Choose ubuntu, trusty, amd64 when prompted

# Then clone the first container

lxc-clone -o pyServer -n pyClient

啟動伺服器

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

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

程式碼如下:

apt-get install python

vim

開啟vim(或你個人偏好的文字編輯器),敲入以下python程式碼。

程式碼如下:

from socket import *

serverPort = 12000

serverSocket = socket(AF_INET, SOCK_DGRAM)

(('', serverPort))

print "The server is ready to rock and roll!"

while 1:

name, clientAddress = from(2048)

response = "Hello " + str(name) + "! You are really good at socket programming"

to(response, clientAddress)

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

  啟動客戶端

現在伺服器端已經準備就緒,改讓客戶端跑起來了。在開始前先查一下伺服器容器的IP地址,我們馬上就會用到。你可以用這個命令得到IP:lxc-ls --fancy 。用一個screen會話進入到客戶端的容器,和前面步驟一樣安裝好python。

程式碼如下:

lxc-start -n pyClient -d

screen -dRR pyClient

lxc-attach -n pyClient

apt-get install python

vim

在vim裡面敲入以下程式碼建立一個檔案。

程式碼如下:

from socket import *

# Replace the IP address in serverName with the IP of your container that you grabbed previously.

serverName = ''

serverPort = 12000

clientSocket = socket(AF_INET, SOCK_DGRAM)

name = raw_input('Please enter your name:')

to(name, (serverName, serverPort))

response, serverAddress = from(2048)

print response

e()

這段程式碼也很直觀。要求使用者輸入使用者名稱,然後傳送到伺服器,最後打印出伺服器響應資訊。

現在你可以自己來了!儲存檔案,然後執行python程式 python .在你輸入你的名字並按下回車後,就應該可以收到一條來自伺服器的'響應資訊。

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

以上所述就是本文的全部內容了,希望對大家學習python能夠有所幫助。

TAG標籤:Python 程式設計 socket #