socket介面程式設計在期貨交易系統中的應用

才智咖 人氣:9.32K
socket介面程式設計在期貨交易系統中的應用
摘要: 本文講述用socket介面程式設計的原理及使用它實現交易系統的具體方法。 關鍵詞:socket 通訊 交易 1.交易系統介紹交易就是使用者對商品的買與賣。交易系統是通過計算機系統來進行交易,也就是說,商品的買與賣都是通過計算機的網路及後臺程序配對完成,交易核心採用基於記憶體的方式設計開發以達到最大的交易及查詢響應速度。它的設計思路是:交易系統的所有資料存放在關係資料庫中,但交易核心在啟動後與硬碟資料不直接通訊,而只是在啟動時將交易所需資料一次性讀入共享記憶體。這之後的所有交易撮合、生成委託單、交易結果都是在記憶體中實現的。當交易結束後,再將交易結果從記憶體裝回硬碟資料庫中,在資料庫中實現交易結算、整理,產生各種帳目及統計報表,同時,再一次完成各種資訊的錄入與修改。交易核心與外界的通訊經由訊息佇列(message queue),交易核心用於交易所使用的資料存放共享記憶體(shared memory)中,利用socket介面程式設計來實現et的設計原理及進行通訊連線的過程框圖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);
論文出處(作者):
關於CD-ROM媒體教材中互動式對話功能的基礎性研究及其應
Java 的 HTTP 檔案佇列下載