• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-379  評論-37  文章-0  trackbacks-0

              
              

            剛接觸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 端口號(如5678)。

            此種方式常用于點對點通訊。


            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,可以說連接任何方式的通信程序都不存在問題。


            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wgl_suc102/archive/2008/01/23/2060828.aspx

            posted on 2010-03-24 11:32 小王 閱讀(3299) 評論(0)  編輯 收藏 引用 所屬分類: 網絡通訊
            国产亚洲色婷婷久久99精品| 午夜福利91久久福利| 日产精品久久久久久久| 久久青青草原亚洲av无码app | 久久久久久免费一区二区三区| 久久亚洲精品视频| 日本高清无卡码一区二区久久| 欧美黑人又粗又大久久久| 亚洲国产天堂久久综合网站| 久久精品综合网| 99久久99久久精品国产片| 国产成人精品综合久久久久| 99久久伊人精品综合观看| 狠狠综合久久AV一区二区三区| 爱做久久久久久| 国产Av激情久久无码天堂| 伊人久久大香线蕉精品不卡| 日本精品久久久久中文字幕8| 久久久久久久97| 午夜精品久久影院蜜桃| 久久精品国产亚洲Aⅴ香蕉| 无码人妻少妇久久中文字幕蜜桃| 久久亚洲2019中文字幕| 国产综合精品久久亚洲| 无码人妻久久一区二区三区免费| 少妇被又大又粗又爽毛片久久黑人 | 国产午夜精品理论片久久影视| 四虎国产精品成人免费久久| 99久久精品费精品国产 | 亚洲色欲久久久综合网| 综合久久一区二区三区 | 久久99久久99小草精品免视看| 久久久久久久精品妇女99| 四虎久久影院| 亚洲精品国产综合久久一线| 亚洲欧美成人久久综合中文网 | 久久精品国产亚洲av麻豆蜜芽| 久久亚洲sm情趣捆绑调教| 伊人久久无码中文字幕| 亚洲色婷婷综合久久| 日韩av无码久久精品免费|