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