国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

這篇具有很好參考價值的文章主要介紹了Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、前期準(zhǔn)備

本文主要講解CAPL語言里是如何實(shí)現(xiàn)TCP連接通信的,所以在本文開始前需要一些前期準(zhǔn)備。

1、首先是需要了解TCP的報文格式,連接三次握手,斷開連接四次揮手的相關(guān)知識,推薦以下兩位博主文章。

深入淺出TCP三次握手 (多圖詳解)

兩張動圖-徹底明白TCP的三次握手與四次揮手

2、Canoe自帶實(shí)現(xiàn)TCP連接的CAPL例程,以及在幫助文檔里有對TCP接口進(jìn)行相關(guān)的說明,本文以例程為例,對邏輯進(jìn)行梳理,進(jìn)行相關(guān)更改。

例程路徑:C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 16.0.145\Ethernet\Simulation\TCPBasicCAPL
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
說明文檔路徑:Ethernet>TCP/IP API
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

3、在說明文檔里可以看到創(chuàng)建客戶端和服務(wù)端套接字流程以及TCP API函數(shù)的使用說明。

先了解下簡要流程,具體函數(shù)使用往后繼續(xù)講解。

在客戶端,需先使用TcpOpen創(chuàng)建一個Socket(套接字)綁定地址和端口,TcpOpen函數(shù)創(chuàng)建完端口后,會返回一個句柄,這個句柄可供后續(xù)相關(guān)TCP的API函數(shù)使用。然后使用TcpConnect函數(shù)便可將創(chuàng)建的客戶端Socket向目的地址和目的端口(服務(wù)端Socket)發(fā)起連接。

在服務(wù)端,也是使用TcpOpen創(chuàng)建一個Socket。而服務(wù)端還需使用TcpListen監(jiān)聽函數(shù),來等待連接,如果收到連接請求,會回調(diào)OnTcpListen函數(shù),在OnTcpListen函數(shù)里需要使用TcpAccept函數(shù)對連接請求進(jìn)行接受,TcpAccept函數(shù)在接受請求后會重建一個新的Socket用于連接通訊。也就是服務(wù)端會有兩個端口,一個是服務(wù)器端口,用于接收連接請求,一個是連接端口,用于連接建立好后進(jìn)行與客戶端的通訊。

而端口的關(guān)閉均使用TcpClose函數(shù)。

二、TCP連接流程實(shí)現(xiàn)

1、打開工程

我們打開示例工程看看是如何進(jìn)行TCP連接模擬的。

首先看到Setup桌面面板,有兩個節(jié)點(diǎn)分別是Server和Client。Start Value里是對一些變量的值初始化。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

接著看到Simulation桌面面板,里面有Server和Client兩個操作面板。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

2、運(yùn)行演示

先看下Start Value面板里的賦值順序,Listen賦值為0,Connect賦值為0,TxText初始化會“Hello World”,RxText初始化清空。點(diǎn)擊閃電Start圖標(biāo)運(yùn)行,可以看到Listen鍵置灰,Connect鍵置灰,TxText文本框里有“Hello World”字符串,點(diǎn)擊Send發(fā)送,原本清空的RxText框收到了“Hello World”字符串。并且在trace窗口,可以看到tcp三次握手連接的報文以及傳輸“Hello World”字符串發(fā)送和應(yīng)答報文。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

3、代碼對應(yīng)

根據(jù)運(yùn)行演示的步驟,來具體看看CAPL代碼里的實(shí)現(xiàn)。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
首先看看按下服務(wù)端按下Listen按鍵觸發(fā)的操作。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
TCP棧的位置,以及客戶端和服務(wù)端ip地址的設(shè)置。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
服務(wù)端開啟監(jiān)聽后,客戶端Connect按鍵按下發(fā)起主動連接。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
客戶端用了Connect函數(shù)后便會發(fā)送連接請求,收到服務(wù)端的第一幀應(yīng)答后,也就是第二次握手后,接著會觸發(fā)OnTcpConnect函數(shù)。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
第三次握手后,會觸發(fā)OnTcpListen監(jiān)聽函數(shù),創(chuàng)建一個新的連接socket進(jìn)行通信。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
連接完成后,服務(wù)端點(diǎn)擊send按鈕進(jìn)行發(fā)送,觸發(fā)相關(guān)事件,并用連接socket進(jìn)行消息的發(fā)送。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
在服務(wù)端發(fā)送信息后,則會觸發(fā)客戶端接收回調(diào)函數(shù)的使用,進(jìn)行消息的接收。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
最后再看看關(guān)閉函數(shù),就是直接調(diào)用close函數(shù),服務(wù)端close會觸發(fā)客戶端回調(diào)OnTcpClose,客戶端close會觸發(fā)服務(wù)端回調(diào)OnTcpClose。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

4、客戶端向服務(wù)端發(fā)送消息

源碼里已經(jīng)有服務(wù)端向客戶端發(fā)送消息的代碼了,那客戶端怎么向服務(wù)端發(fā)送消息,直接用客戶端socket調(diào)用send函數(shù)就可以了,因?yàn)檫B接已經(jīng)建立好,所以不用指定服務(wù)端的連接socket。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
服務(wù)端在OnTcpReceive函數(shù)里對接收數(shù)據(jù)進(jìn)行處理。
Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)
補(bǔ)充:

CAPL提供兩種API的使用方式,如下圖,一種是函數(shù)形式,一種是方法形式。上面例子均使用的是方法形式,即定義了一個TcpSocket的數(shù)據(jù)類型gSocket,直接用gSocket這個數(shù)據(jù)對象去調(diào)用send函數(shù)或其他函數(shù)。

如要使用函數(shù)形式,則需要先用TcpOpen函數(shù)先創(chuàng)建一個socket,TcpOpen會返回一個dword數(shù)據(jù)類型的句柄,在使用其他函數(shù)時侯,如下方TcpSend時,將句柄傳入dword socket這個參數(shù)即可,其他函數(shù)類似。在程序編寫時,使用其中一種形式進(jìn)行編寫較為便利。

Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)

三、總結(jié)

以上,capl里實(shí)現(xiàn)tcp連接通訊流程是,client和server用open()打開創(chuàng)建socket,服務(wù)端用listen()監(jiān)聽,客戶端用connect()去主動連接,服務(wù)端在listen()回調(diào)里用accept()接收連接請求,并創(chuàng)建一個新socket,完成連接,最后用send()即可互相通訊。而close()用于關(guān)閉連接。用好open()、listen()、connect()、accept()、close()、send()函數(shù)則tcp的三次握手、四次揮手程序自動會去實(shí)現(xiàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-469167.html

到了這里,關(guān)于Canoe CAPL語言實(shí)現(xiàn)TCP連接與通信流程(TCP相關(guān)API函數(shù)詳細(xì)使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CANOE UDS 安全訪問CAPL腳本

    CANOE UDS 安全訪問CAPL腳本

    本文是關(guān)于如何用CAPL腳本實(shí)現(xiàn)安全訪問過程的。其中包括準(zhǔn)備工作、CAPL腳本編寫和調(diào)用診斷接口執(zhí)行安全訪問算法的步驟。以下是該文本的主要要點(diǎn): 加載包含安全訪問算法的dll文件 通過diagSetTarget函數(shù)設(shè)置目標(biāo)ECU 使用diagSendRequest函數(shù)發(fā)送請求獲取seed和發(fā)送帶有key數(shù)組的請

    2024年02月06日
    瀏覽(30)
  • 【CANoe】CAPL_UDS安全算法dll制作

    【CANoe】CAPL_UDS安全算法dll制作

    使用UDS進(jìn)行刷寫時,需要27服務(wù)解密后,才能正確執(zhí)行刷寫,本文提供兩種制作27解密dll的方法,用于CANoe的CAPL腳本中。 【特別說明】 遇到問題時,CAPL幫助文檔提供了很好的指引,大家可以好好利用。 CAPL DLL示例所在路徑: C:UsersPublicDocumentsVectorCANoeSample Configurations 12.

    2024年02月06日
    瀏覽(187)
  • 保護(hù)你的CANoe項(xiàng)目:CAPL文件加密與安全實(shí)踐

    保護(hù)你的CANoe項(xiàng)目:CAPL文件加密與安全實(shí)踐

    ?創(chuàng)作者:陳書予 ??個人主頁:陳書予的個人主頁 ??陳書予的個人社區(qū),歡迎你的加入: 陳書予的社區(qū) ?? 專欄地址:Vector-CAPL 自動化探索

    2024年02月12日
    瀏覽(29)
  • Go語言實(shí)現(xiàn)TCP通信

    TCP協(xié)議為 傳輸控制協(xié)議 ,TCP協(xié)議有以下幾個特點(diǎn): 1. TCP是面向連接的傳輸層協(xié)議; 2. 每條TCP連接只能有兩個端點(diǎn),每條TCP連接是點(diǎn)到點(diǎn)的通信; 3. TCP提供可靠的交付服務(wù),保證傳送的數(shù)據(jù)無差錯,不丟失,不重要且有序; 4. TCP提供全雙工通信,允許雙方在任何時候都能發(fā)送

    2023年04月22日
    瀏覽(14)
  • linux【網(wǎng)絡(luò)編程】TCP協(xié)議通信模擬實(shí)現(xiàn)、日志函數(shù)模擬、守護(hù)進(jìn)程化、TCP協(xié)議通信流程、三次握手與四次揮手

    linux【網(wǎng)絡(luò)編程】TCP協(xié)議通信模擬實(shí)現(xiàn)、日志函數(shù)模擬、守護(hù)進(jìn)程化、TCP協(xié)議通信流程、三次握手與四次揮手

    Tcp通信模擬實(shí)現(xiàn)與Udp通信模擬實(shí)現(xiàn)的區(qū)別不大,一個是面向字節(jié)流,一個是面向數(shù)據(jù)報;udp協(xié)議下拿到的數(shù)據(jù)可以直接發(fā)送,tcp協(xié)議下需要創(chuàng)建鏈接,用文件描述符完成數(shù)據(jù)的讀寫 1.1.1 接口認(rèn)識 1.1.1.1 listen:監(jiān)聽socket 1.1.1.2 accept:獲取連接 通信就用accept返回的文件描述符,

    2024年02月06日
    瀏覽(28)
  • Java TCP長連接詳解:實(shí)現(xiàn)穩(wěn)定、高效的網(wǎng)絡(luò)通信

    在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中,穩(wěn)定而高效的網(wǎng)絡(luò)通信是至關(guān)重要的。而TCP長連接作為一種常見的通信機(jī)制,允許客戶端和服務(wù)器之間保持長時間的連接,有效地傳輸數(shù)據(jù)。本文將詳細(xì)介紹Java中TCP長連接的概念、優(yōu)點(diǎn)、適用場景,并結(jié)合實(shí)際案例進(jìn)行分析。 TCP長連接是一種建立在T

    2024年02月03日
    瀏覽(26)
  • 【TCP服務(wù)器的演變過程】編寫第一個TCP服務(wù)器:實(shí)現(xiàn)一對一的連接通信

    【TCP服務(wù)器的演變過程】編寫第一個TCP服務(wù)器:實(shí)現(xiàn)一對一的連接通信

    手把手教你從0開始編寫TCP服務(wù)器程序,體驗(yàn) 開局一塊磚,大廈全靠壘 。 為了避免篇幅過長使讀者感到乏味,對【TCP服務(wù)器的開發(fā)】進(jìn)行分階段實(shí)現(xiàn),一步步進(jìn)行優(yōu)化升級。 函數(shù)原型: 這個函數(shù)建立一個協(xié)議族、協(xié)議類型、協(xié)議編號的socket文件描述符。如果函數(shù)調(diào)用成功,

    2024年02月03日
    瀏覽(23)
  • Linux系統(tǒng)c語言socket實(shí)現(xiàn)TCP通信

    Linux系統(tǒng)c語言socket實(shí)現(xiàn)TCP通信

    socket通信用到的函數(shù) sockaddr_in結(jié)構(gòu)體(在netinet/in.h中定義) 對于服務(wù)端 使用socket()創(chuàng)建套接字socket 使用bind()將創(chuàng)建的套接字綁定到一個本地地址和端口上 listen()將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接收客戶端請求 accept()接收連接請求,返回一個對應(yīng)于此次連接的新的套接字 read()

    2024年02月05日
    瀏覽(21)
  • Python入門【TCP建立連接的三次握手、 TCP斷開連接的四次揮手、套接字編程實(shí)戰(zhàn)、 TCP編程的實(shí)現(xiàn)、TCP雙向持續(xù)通信】(二十七)

    Python入門【TCP建立連接的三次握手、 TCP斷開連接的四次揮手、套接字編程實(shí)戰(zhàn)、 TCP編程的實(shí)現(xiàn)、TCP雙向持續(xù)通信】(二十七)

    ??作者簡介:大家好,我是愛敲代碼的小王,CSDN博客博主,Python小白 ??系列專欄:python入門到實(shí)戰(zhàn)、Python爬蟲開發(fā)、Python辦公自動化、Python數(shù)據(jù)分析、Python前后端開發(fā) ??如果文章知識點(diǎn)有錯誤的地方,請指正!和大家一起學(xué)習(xí),一起進(jìn)步?? ??如果感覺博主的文章還不錯的

    2024年02月12日
    瀏覽(20)
  • TCP/IP C 語言實(shí)現(xiàn)單個客戶端和服務(wù)端 TCP 通信

    ?這是多線程服務(wù)端 這是單線程服務(wù)端? 這是客戶端 ?

    2024年02月21日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包