梁 巖
(云南大學(xué)信息學(xué)院 云南 650091)
Socket是網(wǎng)絡(luò)中的應(yīng)用程序相互發(fā)送請求和回答的接口,它是實現(xiàn)網(wǎng)絡(luò)通信的基礎(chǔ)。socket也叫做“套接字”,通信鏈中的每個連接都由兩個套接字組成,套接字可以描述TCP/IP連接的IP地址和端口。由于每種連接的啟動方式存在差異,并且套接字連接的目標不同,所以套接字實現(xiàn)全部網(wǎng)絡(luò)連接的流程可分為:服務(wù)器監(jiān)聽、客戶端請求、連接確認。服務(wù)器監(jiān)聽是指服務(wù)器端的套接字不與客戶端套接字綁定,而是實時地監(jiān)控網(wǎng)絡(luò)的狀態(tài),等待與發(fā)送請求的客戶端進行連接??蛻舳苏埱笫侵缚蛻舳颂捉幼痔峁⒁B接的服務(wù)器端套接字的地址和端口,通過這種方式達到與服務(wù)器建立連接的目的。
Socket通信是計算機進行網(wǎng)絡(luò)通信的基本方法之一。在計算機中各種應(yīng)用程序可以通過調(diào)用socket函數(shù)來建立網(wǎng)絡(luò)通信連接。目前,客戶/服務(wù)器(C/S)模式在各種應(yīng)用程序的網(wǎng)絡(luò)通信中被廣泛采用,使用socket實現(xiàn)應(yīng)用程序網(wǎng)絡(luò)通信的步驟可分為:
客戶端欲與服務(wù)器端建立網(wǎng)絡(luò)通信,首先客戶端需要建立一個 socket,利用 socket()函數(shù)對本身以及需要建立連接的服務(wù)器做出描述,在協(xié)議族中明確將要進行連接的服務(wù)器端的地址和端口號。然后客戶端通過connect()函數(shù)向服務(wù)器端發(fā)送連接請求,等待服務(wù)器端確認描述信息并作出相應(yīng)的反饋應(yīng)答。當(dāng)服務(wù)器端給予有效的應(yīng)答之后,客戶端和服務(wù)器就成功建立了網(wǎng)絡(luò)連接,這時兩者之間可以根據(jù)預(yù)先確定的目的進行數(shù)據(jù)交互通信。當(dāng)數(shù)據(jù)的傳輸或使用完成之后,客戶端還需要通過close操作關(guān)閉本地 socket連接。至此,客戶端的網(wǎng)絡(luò)通信步驟才算完全完成。
建立網(wǎng)路通信連接時,服務(wù)器端需要配合客戶端做出對應(yīng)準備和應(yīng)答。服務(wù)器端也需要建立 socket,在調(diào)用 socket()函數(shù)之后還應(yīng)調(diào)用listen()函數(shù)實現(xiàn)對整個網(wǎng)路中連接請求的監(jiān)聽。當(dāng)服務(wù)器端監(jiān)聽到來自某客戶端的連接請求之后,它會調(diào)用 accept()函數(shù)用以接收檢測到的連接請求,同時也給客戶端發(fā)送接收請求的信息。成功建立網(wǎng)絡(luò)通信連接時,客戶與服務(wù)器之間就能夠進行網(wǎng)絡(luò)讀寫操作,共享和交流雙方的數(shù)據(jù)資源和信息。同樣的,在完成網(wǎng)絡(luò)通信之后服務(wù)器端也要關(guān)閉同客戶端之間的Socket連接。服務(wù)器端回到初始的監(jiān)聽狀態(tài),繼續(xù)等待來自客戶端的連接請求。
Socket包括兩種類型:流式socket和數(shù)據(jù)報式socket。流式socket應(yīng)用于面向連接的網(wǎng)絡(luò)通訊而數(shù)據(jù)報式socket用于無連接的通訊方式。兩種socket在編寫socket程序時都需要調(diào)用socket函數(shù),socket函數(shù)原型中包含地址和協(xié)議。在socket數(shù)據(jù)結(jié)構(gòu)中,需要包含通訊連接協(xié)議、本地主機協(xié)議地址、本地主機進程協(xié)議端口、遠端主機協(xié)議地址和遠端進程協(xié)議端口這五種基本信息。
當(dāng)前,Socket通信技術(shù)的較為成熟,傳輸穩(wěn)定、快速。結(jié)合客戶/服務(wù)器的通信模式,通過以太網(wǎng)口使用 TCP/IP協(xié)議能夠進行網(wǎng)絡(luò)通信,實現(xiàn)對遠程終端的監(jiān)控作用。在Socket網(wǎng)絡(luò)通信技術(shù)廣泛用于控制系統(tǒng)的背景下,以電梯控制裝置為服務(wù)器端的C/S模式網(wǎng)絡(luò)通信控制系統(tǒng)的設(shè)計和應(yīng)用越來越多。
該電梯控制系統(tǒng)中,由網(wǎng)絡(luò)通信接口和電梯控制器組成服務(wù)器端。網(wǎng)絡(luò)通信接口是實現(xiàn)以太網(wǎng)物理傳輸?shù)穆窂?,而電梯控制器主要負?zé)收集電梯的實時運行信息、建立網(wǎng)絡(luò)通信協(xié)議以及控制電梯的運行。通過DSP初始化本地的網(wǎng)卡,在網(wǎng)卡的各種寄存器中獲得網(wǎng)卡的地址和執(zhí)行收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包操作。系統(tǒng)中的客戶端可由固定電腦或者移動設(shè)備組成,使用計算機中的網(wǎng)卡進行物理傳輸,通過專用的程序軟件管理和控制與服務(wù)器端建立的網(wǎng)絡(luò)通信。
電梯控制系統(tǒng)的客戶端和服務(wù)器建立網(wǎng)絡(luò)通信是雙方按照步驟相互交流和配合的過程。服務(wù)器端預(yù)先啟動,建立socket并初始化本地端口,監(jiān)聽網(wǎng)絡(luò)中的連接請求。當(dāng)網(wǎng)卡得到來自客戶端的連接請求,將會向電梯控制器傳遞連接請求信息。在接受連接請求的同時建立一條新的連接通道,并發(fā)送給客戶端連接的信息??蛻舳舜_認連接信息之后,服務(wù)器將等待客戶端接下來發(fā)出的服務(wù)請求。服務(wù)器完成服務(wù)請求的處理,形成相對應(yīng)的回答并發(fā)送給服務(wù)端,再次等待客戶端接收、確認和發(fā)送請求。然后服務(wù)器會根據(jù)已確定的服務(wù)請求,協(xié)同電梯控制器開展一個新的工作進程,實現(xiàn)對電梯的監(jiān)控。完成這項服務(wù)請求之后,服務(wù)器端將會關(guān)閉連接、回到監(jiān)聽狀態(tài),等待新的連接請求和客戶指令。相應(yīng)地,客戶端啟動后根據(jù)需要向服務(wù)器端發(fā)送連接請求,和遠程電梯控制器建立連接。連接到指定的服務(wù)器端口之后,客戶端繼續(xù)向服務(wù)器傳達服務(wù)請求、控制命令。服務(wù)器接收和處理請求或命令后,客戶端可以再次向服務(wù)器發(fā)送新的連接請求。所有請求完成之后,客戶端關(guān)閉連接停止網(wǎng)絡(luò)通信。該網(wǎng)絡(luò)通信過程如圖1所示:
Socket通信是計算機網(wǎng)絡(luò)通信的基本方法,其優(yōu)點是傳輸速度快、穩(wěn)定。運用Socket網(wǎng)絡(luò)通信技術(shù)能夠?qū)崿F(xiàn)對電梯的遠程監(jiān)控,實時地監(jiān)視電梯的使用狀態(tài),控制電梯的運行,從而有效地進行電梯的管理,也方便于電梯的維修工作。
[1]王平立,王玲. 電梯遠程監(jiān)控網(wǎng)絡(luò)系統(tǒng)設(shè)計與實現(xiàn)[J]. 計算機系統(tǒng)應(yīng)用. 2002(07).
[2]李偉光,羅瑋韜,王勇,劉銓權(quán). 基于DSP的嵌入式系統(tǒng)以太網(wǎng)接入技術(shù)研究[J]. 機電工程技術(shù). 2009(04).
[3]徐愛華,全書海. Socket網(wǎng)絡(luò)通信及其在電梯監(jiān)控系統(tǒng)中的應(yīng)用[J]. 2006(11).