TCP/IP通訊程式設計的豐富多樣性(轉)
TCP/IP通訊程式設計的豐富多樣性(轉)[@more@]剛接觸TCP/IP通訊設計的人根據範例可以很快編出一個通訊程序,據此一些人可能會認為TCP/IP程式設計很簡單。其實不然,TCP/IP程式設計具有較為豐富的內容。其程式設計的豐富性主要體現在通訊方式和報文格式的多樣性上。一。通訊方式主要有以下三大類:(一)SERVER/CLIENT方式1.一個Client方連線一個Server方,或稱點對點(peer to peer):2.多個Client方連線一個Server方,這也是通常的併發伺服器方式。3.一個Client方連線多個Server方,這種方式很少見,主要用於一個客戶向多個伺服器傳送請求情況。(二)連線方式1.長連線Client方與Server方先建立通訊連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在,可以用下面命令檢視連線是否建立:netstat –f inet|grep 埠號(如567。此種方式常用於點對點通訊。2.短連線Client方與Server每進行一次報文收發交易時才進行通訊連接,交易完畢後立即斷開連線。此種方式常用於一點對多點通訊,比如多個Client連線一個Server.(三)傳送接收方式1.非同步報文傳送和接收是分開的,相互獨立的,互不影響。這種方式又分兩種情況:(1)非同步雙工:接收和傳送在同一個程式中,有兩個不同的子程式分別負責傳送和接收(2)非同步單工:接收和傳送是用兩個不同的程式來完成。2.同步報文傳送和接收是同步進行,既報文傳送後等待接收返回報文。同步方式一般需要考慮超時問題,即報文發上去後不能無限等待,需要設定超時時間,超過該時間傳送方不再等待讀返回報文,直接通知超時返回。 實際通訊方式是這三類通訊方式的組合。比如一般書上提供的TCP/IP範例程式大都是同步短連線的SERVER/CLIENT程式。有的組合是基本不用的,比較常用的有價值的組合是以下幾種:同步短連線Server/Client同步長連線Server/Client非同步短連線Server/Client非同步長連線雙工Server/Client非同步長連線單工Server/Client其中非同步長連線雙工是最為複雜的一種通訊方式,有時候經常會出現在不同銀行或不同城市之間的兩套系統之間的通訊。比如金卡工程。由於這幾種通訊方式比較固定,所以可以預先編制這幾種通訊方式的模板程式。二.報文格式通訊報文格式多樣性更多,相應地就必須設計對應的讀寫報文的接收和傳送報文函式。(一)阻塞與非阻塞方式 1.非阻塞方式讀函式不停地進行讀動作,如果沒有報文接收到,等待一段時間後超時返回,這種情況一般需要指定超時時間。2.阻塞方式如果沒有報文接收到,則讀函式一直處於等待狀態,直到有報文到達。(二)迴圈讀寫方式1.一次直接讀寫報文在一次接收或傳送報文動作中一次性不加分別地全部讀取或全部傳送報文位元組。2.不指定長度迴圈讀寫這一般發生在短連線程式中,受網路路由等限制,一次較長的報文可能在網路傳輸過程中被分解成了好幾個包。一次讀取可能不能全部讀完一次報文,這就需要迴圈讀報文,直到讀完為止。3.帶長度報文頭迴圈讀寫這種情況一般是在長連線程式中,由於在長連線中沒有條件能夠判斷迴圈讀寫什麼時候結束,所以必須要加長度報文頭。讀函式先是讀取報文頭的長度,再根據這個長度去讀報文.實際情況中,報頭的碼制格式還經常不一樣,如果是非ASCII碼的報文頭,還必須轉換成ASCII,常見的報文頭碼制有:(1)n個位元組的ASCII碼(2)n個位元組的BCD碼(3)n個位元組的網路整型碼以上是幾種比較典型的讀寫報文方式,可以與通訊方式模板一起預先提供一些典型的API讀寫函式。當然在實際問題中,可能還必須編寫與對方報文格式配套的讀寫API.在實際情況中,往往需要把我們自己的系統與別人的系統進行連線,有了以上模板與API,可以說連線任何方式的通訊程式都不存在問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944574/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計師豐富個人生活程式設計師
- TCP/IP的通訊過程-VeCloudTCPCloud
- POCO庫中文程式設計參考指南(8)豐富的Socket程式設計程式設計
- TCP/IP 通訊傳輸流TCP
- TCP/IP Winsock程式設計要點(轉)TCP程式設計
- 一堂豐富的AS3遊戲程式設計課S3遊戲程式設計
- PHP多程式程式設計(2):管道通訊PHP程式設計
- Linux網路程式設計--TCP/IP協議(轉)Linux程式設計TCP協議
- Windows Socket程式設計精華《TCP通訊伺服器》Windows程式設計TCP伺服器
- TCP/IP網路程式設計模型TCP程式設計模型
- java多執行緒實現TCP網路Socket程式設計(C/S通訊)Java執行緒TCP程式設計
- JAVASE網路程式設計之TCP實現聊天通訊Java程式設計TCP
- 經驗豐富的程式設計師,不要和新手說這些程式設計師
- 手把手教你 Socket 通訊(TCP/IP)TCP
- Java&Python的TCP&UDP通訊-網路程式設計JavaPythonTCPUDP程式設計
- 網路程式設計TCP/IP詳解程式設計TCP
- Go語言中的TCP/IP網路程式設計GoTCP程式設計
- 圖形介面的TCP/IP簡單通訊TCP
- 工作豐富化的步驟(轉載)
- Java實現TCP通訊程式JavaTCP
- C#使用TCP/IP與ModBus進行通訊C#TCP
- TCP通訊TCP
- IT程式設計師必知!TCP/IP為什麼會有這麼多的致命漏洞?程式設計師TCP
- Socket、TCP/IP、HTTP、FTP及網路程式設計TCPHTTPFTP程式設計
- 分分鐘讀懂tcp/ip通訊協議原理(含視訊)TCP協議
- 多程式程式設計 (轉)程式設計
- 多程式程式設計(轉)程式設計
- 豐富的設計技能勝過特定於平臺的知識
- 用VB5 Winsock控制元件建立TCP/IP通訊程式控制元件TCP
- MusicLibrary-一個豐富的音訊播放SDK。音訊
- 網路通訊程式設計程式設計
- 旅行保險公司工作豐富模型(轉載)模型
- 作為一名程式設計師 需要不斷豐富自己的知識庫程式設計師
- 淺談 TCP/IP 網路程式設計中 socket 的行為TCP程式設計
- modbus tcp通訊TCP
- 通過 Socket 實現 TCP 程式設計入門TCP程式設計
- 序列通訊的基本原理及用MFC實現串列埠通訊程式設計 (轉)串列埠程式設計
- 程式設計師的數學一書評:通俗易懂,觸類旁通,內容豐富程式設計師