在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關 閉

            新聞中心

            EEPW首頁 > 工控自動化 > 設計應用 > 基于SOCK盯編程實現(xiàn)的組態(tài)軟件與控制器的網(wǎng)絡通訊

            基于SOCK盯編程實現(xiàn)的組態(tài)軟件與控制器的網(wǎng)絡通訊

            作者: 時間:2010-09-01 來源:網(wǎng)絡 收藏

            本系統(tǒng)中,工程師站一般可作為客戶端向發(fā)送連接請求,以建立連接。由于采集數(shù)據(jù)是周期性的,采用異步選擇機制判斷是否有數(shù)據(jù)發(fā)送過來。Windows Sockets的異步選擇函數(shù)提供了消息機制的網(wǎng)絡事件選擇功能,當它所登記的網(wǎng)絡事件發(fā)生時,應用程序相應的窗口會收到一個消息,消息中指明了所發(fā)生的網(wǎng)絡事件以及與該網(wǎng)絡事件相關的一些信息。

            連接建立之后,即可調用Winsock提供的函數(shù)來發(fā)送和接收數(shù)據(jù),進程結束時,則關閉兩個套接字。

            2.2 數(shù)據(jù)交互

            通訊模塊主要與框架、在線兩個模塊以及控制器存在數(shù)據(jù)交互。圖3所示是其通訊模塊與的其它模塊及控制器之間進行數(shù)據(jù)交互的流程圖。其中,通訊模塊發(fā)送給框架窗口的消息主要有三項功能:一是通知在線模塊讀取控制器返回的應答數(shù)據(jù);二是在通訊中出現(xiàn)異常時,返回錯誤信息;三是在通訊出現(xiàn)超時時,返回超時信息。

            2.3 數(shù)據(jù)傳輸協(xié)議

            TCP/IP協(xié)議族的核心部分是傳輸層和網(wǎng)絡層。傳輸層主要為應用程序提供端到端的通信,TCP/IP協(xié)議族有兩個互不相同的傳輸協(xié)議,即TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。

            TCP是一種面向連接的協(xié)議,它可給用戶進程提供可靠的全雙工的數(shù)據(jù)通信,其所做的工作是把應用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡層,同時確認接收到的分組,并提供流量控制、設定超時及重傳等機制。由于TCP提供有高可靠性的端到端的通信,因此,應用程序可以忽略所有這些細節(jié)。

            Winsock的Nagle算法會降低小數(shù)據(jù)包的發(fā)送速度,因此應當定義一種數(shù)據(jù)結構,以將發(fā)送的數(shù)據(jù)按照這種數(shù)據(jù)結構以字符型ASCII發(fā)送,客戶端接收到服務器傳來的數(shù)據(jù),按照這種數(shù)據(jù)結構解析數(shù)據(jù),這樣做可以減少小數(shù)據(jù)包的數(shù)目,避免協(xié)議使用Nagle算法。此外通過消息響應代替輪詢也是提高傳輸實時性的一種措施。

            2.4 阻塞的預防及處理

            TCP/IP協(xié)議本身的滑動窗口控制可以有效的防止阻塞的發(fā)生。假設服務器和客戶端的收發(fā)緩沖區(qū)大小為100 K字節(jié),服務器每發(fā)送一個大小為80 K字的數(shù)據(jù)包,客戶端接收到這個數(shù)據(jù)包后,將返回一個應答,應答中包含有下次服務器能夠發(fā)送的最大的字節(jié)數(shù),即下次服務器只能發(fā)送大小不能超過20 K字的數(shù)據(jù)。按照這種控制方法,TCP/IP可根據(jù)滑動窗口的大小控制發(fā)送的速度,滑動窗口大,則發(fā)送的數(shù)據(jù)量大,滑動窗口過小,則發(fā)送的數(shù)據(jù)量也會減小,這樣即可以防止阻塞的發(fā)生。

            該通訊模塊中使用的防阻塞方法是在同步方式中采用select函數(shù)來檢查接收發(fā)送緩沖區(qū)的讀寫可用狀態(tài)。服務器端發(fā)送數(shù)據(jù)前,應先檢查服務器的發(fā)送緩沖區(qū)是否可寫,如不可寫,說明發(fā)送緩沖區(qū)己經(jīng)寫滿,需要等待發(fā)送緩沖區(qū)有剩余空間時再發(fā)送,以避免阻塞。同樣,客戶端在讀緩沖區(qū)數(shù)據(jù)前,也應先檢查一下緩沖區(qū)是否可讀。如果發(fā)送緩沖區(qū)一直不可寫,那么可能是因為網(wǎng)絡斷開,或者網(wǎng)絡負載過大,使數(shù)據(jù)不能發(fā)送出去。

            設置一個超時時限,可以阻塞發(fā)生時,當發(fā)送緩沖區(qū)不可寫的狀態(tài)超過設置的超時時間,系統(tǒng)則重新建立一個連接。

            將這種方法和TCP/IP協(xié)議本身的防阻塞控制結合使用,可以有效地防止阻塞的發(fā)生。



            評論


            相關推薦

            技術專區(qū)

            關閉