- 相關(guān)推薦
SOCKET 接口編程在期貨交易系統(tǒng)中的應(yīng)用
SOCKET 接口編程在期貨交易系統(tǒng)中的應(yīng)用 南京河海大學(xué)計算機及信息工程學(xué)院 朱涇文摘要: 本文講述用SOCKET接口編程的原理及使用它實現(xiàn)交易系統(tǒng)的具體方法。
關(guān)鍵詞:SOCKET 通信 交易
1.交易系統(tǒng)介紹
交易就是用戶對商品的買與賣。交易系統(tǒng)是通過計算機系統(tǒng)來進行交易,也就是說,商品的買與賣都是通過計算機的網(wǎng)絡(luò)及后臺進程配對完成,交易核心采用基于內(nèi)存的方式設(shè)計開發(fā)以達到最大的交易及查詢響應(yīng)速度。它的設(shè)計思路是:交易系統(tǒng)的所有數(shù)據(jù)存放在關(guān)系數(shù)據(jù)庫中,但交易核心在啟動后與硬盤數(shù)據(jù)不直接通信,而只是在啟動時將交易所需數(shù)據(jù)一次性讀入共享內(nèi)存。這之后的所有交易撮合、生成委托單、交易結(jié)果都是在內(nèi)存中實現(xiàn)的。當交易結(jié)束后,再將交易結(jié)果從內(nèi)存裝回硬盤數(shù)據(jù)庫中,在數(shù)據(jù)庫中實現(xiàn)交易結(jié)算、整理,產(chǎn)生各種帳目及統(tǒng)計報表,同時,再一次完成各種信息的錄入與修改。
交易核心與外界的通信經(jīng)由消息隊列(MESSAGE QUEUE),交易核心用于交易所使用的數(shù)據(jù)存放共享內(nèi)存(SHARED MEMORY)中,利用SOCKET接口編程來實現(xiàn).
2.SOCKET的設(shè)計原理及進行通信連接的過程框圖
Socket設(shè)計在操作系統(tǒng)的核心中,提供一些系統(tǒng)調(diào)用以支持多種通信協(xié)議(如TCP,UDP等等)。當要支持一種新的通信協(xié)議時,則需要把核心做一些改變。為了免除改變核心太多而造成不便,可以采用流的模塊方式來添加新的功能,但這種方式并無法完全免除更動核心的操作。實際上,核心的設(shè)計把網(wǎng)絡(luò)系統(tǒng)分成三個不同的層,如下圖。
Socket支持3種訪問傳輸系統(tǒng)的接口:其中一種就是同步阻塞方式:使用同步阻塞方式時,Socket庫函數(shù)暫停程序的運行,等待傳輸系統(tǒng)完成請求的操作,操作一旦完成,應(yīng)用程序重新獲得控制權(quán)。如下右圖。
3.重要的Socket系統(tǒng)調(diào)用
(1)創(chuàng)建socket- sockets()系統(tǒng)調(diào)用
應(yīng)用程序在使用sockets之前,首先必須擁有一個sockets,系統(tǒng)調(diào)用sockets()向應(yīng)用程序提供創(chuàng)建sockets的手段,其調(diào)用格式如下:
sockid = socket (int af, int type, int protocol);
(2)指定本地地址-bind()系統(tǒng)調(diào)用
在創(chuàng)建了一個新的socket號后,還要用bind()將本地socket地址(包括主機地址和本地端口號)與所創(chuàng)建的socket號聯(lián)系起來,其調(diào)用格式如下:
bind (SOCKET sockid, const struct sockaddr FAR* name, int namelen);
(3)listen()系統(tǒng)調(diào)用
該調(diào)用用于面向連接的流socket,表明它愿意接收連接請求。當服務(wù)器可能同時收到幾個連接請求時,便將連接請求放入請求隊列。Listen()在accept()之前調(diào)用,其格式為:
listen(SOCKET sockid, int backlog);
(4)建立socket 連接connect()與accept()系統(tǒng)調(diào)用
用于完成整個關(guān)聯(lián)的建立。connect()的調(diào)用格式如下:
connect (SOCKET sockid, const struct sickaddr FAR*name, int namelen);
(5)發(fā)送數(shù)據(jù)send()和sendto()系統(tǒng)調(diào)用
建立了socket連接后,便可利用上述函數(shù)通過該socket發(fā)送數(shù)據(jù)。其中send()用于面向連接的傳輸,sendto()用于無連接傳輸,調(diào)用格式如下:
send (SOCKET sockid, char FAAR* buf, intbuflen, int flags);
sendto(SOCKET sockid, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen);
(6)接收數(shù)據(jù)—recv()和recvfrom()系統(tǒng)調(diào)用接收數(shù)據(jù)系統(tǒng)調(diào)用與發(fā)送數(shù)據(jù)系統(tǒng)調(diào)用是一對應(yīng)的,其調(diào)用格式也是一一對應(yīng)。
(7)關(guān)閉socket—closesocket()系統(tǒng)調(diào)用
在完成數(shù)據(jù)傳輸任務(wù)后,需要調(diào)用closesocket()來關(guān)閉連接和釋放socket,其調(diào)用格式如下:
closesocket(SOCKET sockid);
【SOCKET 接口編程在期貨交易系統(tǒng)中的應(yīng)用】相關(guān)文章:
比法在物理中的應(yīng)用08-17
生活中的化學(xué)在教學(xué)中的應(yīng)用08-23
CAI在“光的反射”中的應(yīng)用08-17
內(nèi)部審計在企業(yè)中的應(yīng)用08-07
內(nèi)部審計在企業(yè)中的應(yīng)用 論文08-08
比較在數(shù)學(xué)教學(xué)中的應(yīng)用08-17
“探究學(xué)習(xí)”在物理教學(xué)中的應(yīng)用08-17
多媒體在化學(xué)教學(xué)中的應(yīng)用08-15
比較法在物理中的應(yīng)用08-17