已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1 使用 LabVIEW 中的 TCP/IP 和 UDP 協(xié)議 前言 互聯(lián)網(wǎng)絡(luò)協(xié)議 (IP), 用戶數(shù)據(jù)報協(xié)議 (UDP)和傳輸控制協(xié)議 (TCP)是網(wǎng)絡(luò)通信的基本的工具。TCP 與 IP 的名稱來自于一組最著名的因特網(wǎng)協(xié)議中的兩個 -傳輸控制協(xié)議和互聯(lián)網(wǎng)絡(luò)協(xié)議。 你能使用 TCP/IP 來進行單一網(wǎng)絡(luò)或者互連網(wǎng)絡(luò)間的通信。單獨的網(wǎng)絡(luò)會被大的地理距離分隔。 TCP/IP 把數(shù)據(jù)從一個子網(wǎng)網(wǎng)絡(luò)或者因特網(wǎng)連接的計算機發(fā)送到另一個上。因為 TCP/IP在大多數(shù)計算機上是可用的,它能在多樣化的系統(tǒng)中間傳送信息。 LabVIEW 和 TCP/IP 你能在所有 平臺上的 LabVIEW 中使用 TCP/IP。 LabVIEW 包含了 TCP 和 UDP 程序還有能讓你建立客戶端或者服務(wù)器程序的功能。 IP IP 執(zhí)行低層次的計算機間的數(shù)據(jù)傳送。在組成部分里的 IP 數(shù)據(jù)包稱為數(shù)據(jù)報。一個數(shù)據(jù)報包含表明來源和目的地地址的數(shù)據(jù)和報頭字。 IP 為通過網(wǎng)絡(luò)或者因特網(wǎng)把數(shù)據(jù)發(fā)送到指定的目的地的數(shù)據(jù)報確定正確的路徑。 IP 協(xié)議并不能保證發(fā)送。事實上,如果數(shù)據(jù)報在傳輸中被復(fù)制, IP 可能多次傳送一個單獨的數(shù)據(jù)報。所以,程序很少用 IP 而是用 TCP 或者 UDP 代替。 UDP UDP 在計算機進程中提供簡單而低層次 的通信。進程通過把數(shù)據(jù)報發(fā)送到一個目的地計算機或者端口進行通信。一個端口是你發(fā)送數(shù)據(jù)的位置。 IP 處理計算機對計算機的發(fā)送。在數(shù)據(jù)報到達目的地計算機后, UDP 把數(shù)據(jù)報移動到其目的端口。如果目的端口不是開放的, UDP將刪除數(shù)據(jù)報。 UDP 將發(fā)生 IP 的同樣的發(fā)送問題。 應(yīng)用程序的 UDP 的可靠性不強。例如,一項應(yīng)用程序能經(jīng)常把大量信息的數(shù)據(jù)傳送到目的地而丟失少量的數(shù)據(jù)是肯定的。 在 LabVIEW 中使用 UDP 協(xié)議 2 因為 UDP 不是一個 TCP 似的一個以連接為基礎(chǔ)的協(xié)議,在你發(fā)送或者收到數(shù)據(jù)之前,你不需要和目的地建立一種連接 。相反,當(dāng)你每發(fā)送一個數(shù)據(jù)報時,由你指定數(shù)據(jù)目的地。操作系統(tǒng)不會報告?zhèn)鬏敳铄e 使用 UDP 打開功能在一個端口上打開一個 UDP 插口。同時打開的 UDP 端口的數(shù)量仍依賴于操作系統(tǒng)。 UDP 的打開的功能返回到網(wǎng)絡(luò)連接時唯一識別 UDP 套接字。使用這種連接在子VI 程序中就是靠這個套接字。 用 UDP 編寫功能發(fā)送數(shù)據(jù)到目的地,然后使用 UDP 閱讀功能閱讀那個數(shù)據(jù)。每寫一個操作要求一個目的地地址和端口。每閱讀一個操作包含來源地址和端口。 UDP 保存你所發(fā)送的每一個命令所指定的數(shù)據(jù)報字節(jié)。 在理論上,你能發(fā)送任何大小的數(shù)據(jù)報。然而,你 最好不使用 UDP 來發(fā)送大的數(shù)據(jù)報,因為它不像 TCP 一樣可靠。 當(dāng)你在一個端口上結(jié)束所有通信時,使用 UDP 結(jié)束功能去釋放系統(tǒng)資源。 UDP 多路廣播 你能使用 UDP 的功能來與一個單獨的客戶端通信或者通過廣播對于所有局域網(wǎng)上的計算機通信。如果你想要傳送成倍增加具體的計算機信息,你必須通過客戶端列表構(gòu)建 UDP 功能反復(fù)執(zhí)行。因為 LabVIEW 能把數(shù)據(jù)的作為一個單獨的拷貝發(fā)送到每個客戶端并且保存對收到數(shù)據(jù)感興趣的客戶端列表,所以運用這種技術(shù)建立完全相同的網(wǎng)絡(luò)交換。 使用多路廣播可以在網(wǎng)絡(luò)上的進行單個的發(fā)送端和多倍的客戶 端之間的通信而不需要保存客戶列表或者要求發(fā)送端把數(shù)據(jù)多重拷貝后發(fā)送給每個客戶端。為了通過多路廣播收到數(shù)據(jù)廣播,所有客戶端必須加入一個多路廣播組。而發(fā)送端不需要加入該組。發(fā)送端只需規(guī)定一個多路廣播的 IP 地址來定義這個多路廣播組。多路廣播的 IP 地址范圍在 到 55 中。當(dāng)一個客戶端想要加入一個多路廣播組時,它只需預(yù)定這個組的多路廣播的 IP 地址。在客戶端預(yù)定到一個多路廣播組之后,客戶端收到從多路廣播的 IP地址發(fā)送的數(shù)據(jù)。 對于 LabVIEW 中的 多路廣播 ,使用 UDP 多路廣播 的打 開程序有能力讀、寫或者讀和寫 UDP數(shù)據(jù)。規(guī)定 TTL 為寫數(shù)據(jù), 多路廣播 地址為讀數(shù)據(jù), 多路廣播 端口號為讀寫數(shù)據(jù)。默認(rèn) TTL是 1,這意味著 LabVIEW 僅僅把數(shù)據(jù)報發(fā)送到本地的網(wǎng)絡(luò)上。當(dāng)一個發(fā)送方收到一個 多路廣播 數(shù)據(jù)報時,它消耗數(shù)據(jù)報的生存時間。如果 TTL 大于 1,發(fā)送方把數(shù)據(jù)報轉(zhuǎn)發(fā)到其它數(shù)據(jù)報。下面的表格說明了當(dāng)你規(guī)定一個 TTL 的值時,一個 多路廣播 數(shù)據(jù)報的運行。 3 0 主機上還存留數(shù)據(jù)報 1 數(shù)據(jù)報發(fā)送到每個在同一本地網(wǎng)絡(luò)上已預(yù)定那個 IP 地址的客戶端。中樞 /轉(zhuǎn)發(fā)器和橋路 /開關(guān)轉(zhuǎn)發(fā)數(shù)據(jù)報。發(fā)送方不轉(zhuǎn)發(fā)數(shù)據(jù)報如果 TTL 為 1。 如果你規(guī)定一個值大于 1,數(shù)據(jù)報 通過 TTL-1 層被發(fā)送 , 并且 發(fā)送方轉(zhuǎn)發(fā)它 。 參閱在 LabVIEW例子 commUDP.llb 中的 UDP 多路廣播接受方程序和 UDP 多路廣播發(fā)送方程序 VI 中使用 UDP 多路廣播 的例程 。 TCP TCP 保證在網(wǎng)絡(luò)中的可靠的通信,按順序發(fā)送而沒有差錯,損失或者重發(fā)。 TCP 直到收到一個確認(rèn)才轉(zhuǎn)發(fā) 。 系統(tǒng)要求 在使用 TCP/IP 之前,確認(rèn)你有必需的要求,這變化依賴于你使用的平臺。 (Windows和 UNIX系統(tǒng) )TCP/IP。 你不需要使用第三種產(chǎn)品連接使用 TCP/IP。如果 你的網(wǎng)絡(luò)適當(dāng)?shù)乇粯?gòu)成, LabVIEW沒有要求附加的設(shè)置。 (Mac OS 系統(tǒng) ) LabVIEW 網(wǎng)絡(luò)要求打開傳送,包括 Mac OS 7.5 和更新的版本。 在 LabVIEW 中使用 TCP TCP 是一個以連接為基礎(chǔ)的協(xié)議,這意味著站點必須在傳送數(shù)據(jù)之前建立一種連接。 TCP 許可多重、同時的連接。 你可以通過等待一種輸入的連接或者通過積極地尋求一種與指定的地址連接建立連接。在建立 TCP 連接時,你必須指定一個地址和該地址的端口。端口范圍在 0 到 65,535 點之間。UNIX 系統(tǒng)為特殊的應(yīng)用程序保留端口數(shù)少于 1,024。在一個 給定的地址中不同的端口能識別不同的服務(wù)。 使用 TCP 的打開連接功能來與一個指定地址進行積極的連接。如果連接成功,功能返回網(wǎng)絡(luò)連接的返回數(shù)唯一識別那個連接。使用這種連接 refnum 來訪問子 VI 程序。 你能使用如下技術(shù)來等輸入連接: 用 TCP 聽程序創(chuàng)建立一個聽者并且在一個指定的端口等待一種可接受的 TCP 連接。如果連接成功, VI 程序返回連接數(shù),地址和遠程 TCP 客戶端口。 TCP 創(chuàng)建聽者功創(chuàng)建一個聽者然后用 TCP 的聽者功能上等待的一個聽者接受新的連接。在聽者功能上的 TCP 等待返回你所發(fā)送的功能和返回數(shù)的同樣的聽者 ID。當(dāng)你結(jié)束等 4 候新的連接時,用 TCP 關(guān)閉連接功能區(qū)關(guān)閉一個聽者。你不能對一個聽者進行讀寫。 用第二種技術(shù)的優(yōu)勢是你能使用 TCP 關(guān)閉連接功能來取消聽操作,這在你想要為了一種連接聽而沒有超時,但是你想要取消當(dāng)另一個條件變真時的聽時是很有用的。你能在任何時間關(guān)閉聽程序。 當(dāng)你建立一種連接時,用 TCP 讀功能和 TCP 寫功能能在遠程應(yīng)用中隊數(shù)據(jù)進行讀寫。 用 TCP 關(guān)閉連接功能區(qū)關(guān)閉遠程連接。如果沒被讀的仍保留著而關(guān)閉連接,你可能失去數(shù)據(jù)。當(dāng)關(guān)閉連接時,在你的計算機上使用較高層次協(xié)議。在連接被關(guān)閉后,你不能再讀寫它。 TCP 和 UDP 之間的區(qū)別 在你想要可靠的數(shù)據(jù)傳輸時, TCP 是最好的協(xié)議。 UDP 是高性能的無需連接的協(xié)議,但是它不保證可靠性。 建立 TCP 客戶端 注意:請參考最近的版本 LabVIEW 幫助功能對這些指令和功能的細節(jié)描述。 完成如下步驟使用 TCP 功能建立一個 TCP 顧客。 1. 用 TCP的打開連接功能來打開一個服務(wù)器的連接。你必須規(guī)定服務(wù)器的因特網(wǎng)地址和服務(wù)器的端口。 地址在網(wǎng)絡(luò)上識別計算機。遠程端口在服務(wù)器使用聽的計算機上識別一個通信通道。當(dāng)你建立一個 TCP 服務(wù)器時,你要規(guī)定你想要服務(wù)器為通信使用的端口。 2. 用 TCP的寫功 能把信息發(fā)送到服務(wù)器上。 3. 用 TCP的讀功能來讀發(fā)自服務(wù)器的信息。你必須規(guī)定你想讀的字節(jié)數(shù)。 4. 用 TCP的關(guān)閉功能來關(guān)閉與服務(wù)器的連接。 請參閱 labviewexamplescommTCP.llb 中對單一數(shù)據(jù)客戶端的 TCP 例程。 超時和差錯 當(dāng)你設(shè)計一種網(wǎng)絡(luò)應(yīng)用時,應(yīng)細心考慮失敗是如何發(fā)生的。例如,如果服務(wù)器被毀,確定如何使每個客戶 VI 程序掌控它。 一種解決方式是確保每個客戶 VI 程序有超時功能。如果發(fā)生沒能在一定量的時間之后生產(chǎn)結(jié)果,客戶端繼續(xù)執(zhí)行。在繼續(xù)時,客戶端能試圖重建連接或者報告出錯。如果必要的話 ,客戶端 VI 程序能關(guān)閉應(yīng)用程序。 5 建立 TCP 服務(wù)器 注意:請參考最近的版本 LabVIEW 幫助功能對這些指令和功能的細節(jié)描述。 完全如下步驟用 TCP 功能來建立一個 TCP 服務(wù)器。 1. 使用 TCP聽程序等待連接。你必須規(guī)定端口。這個端口必須是客戶端試圖訪問的同一個端口。 2. 如果連接被建立,用 TCP讀功能從接受到信息的端口讀信息。 3. 用 TCP寫功能返回結(jié)果。數(shù)據(jù)必須是一種客戶端能接受的形式。 4. 用 TCP關(guān)連接功能來關(guān)閉連接。 請參閱 labviewexamplescommTCP.llb 中對單一數(shù)據(jù)客戶端的 TCP 例程。 TCP 和 UDP 例子 請參閱 labviewexamplescommTCP.llb 和 labviewexamplescommUDP.llb 中用 TCP 和UDP 的 VI 程序和功能。 Application Note 160 6 Using LabVIEW with TCP/IP and UDP Introduction Internet Protocol (IP), User Datagram Protocol (UDP), and Transmission Control Protocol (TCP) are basic tools for network communication. The name TCP/IP comes from two of the best-known protocols of the Internet protocol suite, the Transmission Control Protocol and the Internet Protocol. You can use TCP/IP to communicate over single networks or interconnected networks. The individual networks can be separated by large geographical distances. TCP/IP routes data from one network or Internet-connected computer to another. Because TCP/IP is available on most computers, it can transfer information among diverse systems. LabVIEW and TCP/IP You can use the TCP/IP protocols with LabVIEW on all platforms. LabVIEW includes TCP and UDP VIs and functions you can use to create client or server VIs. IP IP performs the low-level service of moving data between computers. IP packages data into components called datagrams. A datagram contains the data and a header that indicates the source and destination addresses. IP determines the correct path for the datagram to take across the network or Internet and sends the data to the specified destination. IP cannot guarantee delivery. In fact, IP might deliver a single datagram more than once if the datagram is duplicated in transmission. Programs rarely use IP but use TCP or UDP instead. UDP UDP provides simple, low-level communication among processes on computers. Processes communicate by sending datagrams to a destination computer or port. A port is the location where you send data. IP handles the computer-to-computer delivery. After the datagram reaches the destination computer, UDP moves the datagram to its destination port. If the destination port is not open, UDP discards the datagram. UDP shares the same delivery problems of IP. Use UDP in applications in which reliability is not critical. For example, an application might transmit informative data to a destination frequently enough that a few lost segments of data are not problematic. LabVIEW, National Instruments, and are trademarks of National Instruments Corporation. Product and company names mentioned herein are trademarks or trade names of their respective companies. For patents covering National Instruments products, refer to the appropriate location: HelpPatents in your software, the patents.txt file on your CD, or /patents. 342028C-01 20002004 National Instruments Corporation. All rights reserved. March 2004 7 Using UDP in LabVIEW Because UDP is not a connection-based protocol such as TCP, you do not need to establish a connection with a destination before you send or receive data. Instead, you specify the destination for the data when you send each datagram. Operating systems do not report transmission errors. Use the UDP Open function to open a UDP socket on a port. The number of simultaneously open UDP ports depends on the operating system. The UDP Open function returns a network connection refnum that uniquely identifies the UDP socket. Use this connection refnum to refer to this socket in subsequent VI calls. Use the UDP Write function to send data to a destination, and use the UDP Read function to read that data. Each write operation requires a destination address and port. Each read operation contains the source address and port. UDP preserves the datagram bytes that you specified for each command you send. In theory, you can send datagrams of any size. However, you typically would not use UDP to send large datagrams because it is not as reliable as TCP. When you finish all communications on a port, use the UDP Close function to free system resources. UDP Multicast You can use the UDP functions to communicate to a single client (single-cast) or to all computers on the subnet through a broadcast. If you want to communicate to multiple specific computers, you must configure the UDP functions to iterate through a list of clients. Using this technique creates duplicate network traffic because LabVIEW sends a separate copy of the data to each client and maintains a list of clients interested in receiving the data. Use multicasting to communicate between a single sender and multiple clients on a network without requiring the sender to maintain a list of clients or send multiple copies of the data to each client. To receive data broadcast by a multicast sender, all clients must join a multicast group. The sender does not have to join a group to send data. The sender specifies a multicast IP address, which defines a multicast group. Multicast IP addresses are in the to 55 range. When a client wants to join a multicast group, it subscribes to the multicast IP address of the group. After subscribing to a multicast group, the client receives data sent to the multicast IP address. To multicast in LabVIEW, use the UDP Multicast Open VI to open connections capable of reading, writing, or reading and writing UDP data. Specify the time-to-live (TTL) for writing data, the multicast address for reading data, and the multicast port number for reading and writing data. The default TTL is 1, which means LabVIEW sends the datagram only to the local subnet. When a router receives a multicast datagram, it decrements the datagram TTL. If the TTL is greater than 1, the router forwards the datagram to other routers. The following table lists what action occurs to a multicast datagram when you specify a value for the time-to-live parameter. 0 Datagram remains on the host computer. 1 Datagram sent to every client on the same local subnet that subscribes to that IP address. Hubs/repeaters and bridges/switches forward the datagram. Routers do not forward the datagram if the TTL is 1. Application Note 160 2 8 If you specify a value greater than 1, the datagram is sent and routers forward it through TTL-1 layers. Refer to the UDP Multicast Receiver VI and the UDP Multicast Sender VI in the labviewexamplescommUDP.llb for examples of using UDP multicasting. 9 TCP TCP ensures reliable transmission across networks, delivering data in sequence without errors, loss, or duplication. TCP retransmits the datagram until it receives an acknowledgment. System Requirements Before using TCP/IP, confirm that you have the necessary requirements, which vary depending on the platform you use. (Wi ndo ws a nd U N IX) TCP/IP is built in. You do not need to use a third-party product to communicate using TCP/IP. If your network is configured properly, LabVIEW requires no additional setup. (Mac OS) LabVIEW networking requires Open Transport, included in Mac OS 7.5 and later. Using TCP in LabVIEW TCP is a connection-based protocol, which means that sites must establish a connection before transferring data. TCP permits multiple, simultaneous connections. You initiate a connection by waiting for an incoming connection or by actively seeking a connection with a specified address. In establishing TCP connections, you have to specify the address and a port at that address. A number between 0 and 65,535 represents a port. UNIX reserves port numbers less than 1,024 for privileged applications. Different ports at a given address identify different services at that address. Use the TCP Open Connection function to actively establish a connection with a specific address and port. If the connection is successful, the function returns a network connection refnum that uniquely identifies that connection. Use this connection refnum to refer to the connection in subsequent VI calls. You can use the following techniques to wait for an incoming connection: Use the TCP Listen VI to create a listener and wait for an accepted TCP connection at a specified port. If the connection is successful, the VI returns a connection refnum, the address, and the port of the remote TCP client. Use the TCP Create Listener function to create a listener and use the TCP Wait on Listener function to listen for and accept new connections. The TCP Wait on Listener function returns the same listener ID you wired to the function and the connection refnum for a connection. When you finish waiting for new connections, use the TCP Close Connection function to close a listener. You cannot read from or write to a listener. The advantage of using the second technique is that you can use the TCP Close Connection function to cancel a listen operation, which is useful when you want to listen for a connection without using a timeout, but you want to cancel the listen when another condition becomes true. You can close the listen VI at any time. When you establish a connection, use the TCP Read function and the TCP Write function to read and write data to the remote application. Use the TCP Close Connection function to close the connection to the remote application. If unread data remains and the connection closes, you might lose data. Use a higher level protocol for your computer to determine when to close the connection. After a connection is closed, you cannot read from it or write to it again. National Instruments Corporation 3 Application Note 160 10 Deciding between TCP and UDP TCP is the best protocol to use if you want reliable data transmission. UDP is a connectionless protocol with higher performance, but it does not ensure reliable data transmission. 中北大 學(xué) 2005 屆本科畢業(yè)設(shè)計說明書 第 11 頁 共 11 頁 Creating a TCP Client Note Refer to the LabVIEW Help for the most recent version of these instructions and details for each of the functions. Complete the following steps to create a TCP client using the TCP functions. 1. Use the TCP Open Connection function to open a connection to a server. You must specify the Internet address of the server and the port for the server. The address identifies a computer on the network. The remote port identifies a communication channel on the computer that the server uses to listen for communication requests. When you create a TCP server, you specify the port that you want the server to use for communication. 2. Use the TCP Write function to send a message to a server. 3. Use the TCP Read function to read a message from the server. You must specify the number of bytes you want to read. 4. U
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版游戲版權(quán)采購合同示范文本3篇
- 湘潭大學(xué)《體育基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年版經(jīng)營權(quán)作抵押借款協(xié)議樣例版B版
- 二零二五版戶外廣告資源代理合作框架協(xié)議3篇
- 2024消防設(shè)備研發(fā)與制造合同范本3篇
- 二零二五年度藝術(shù)品收藏交易合同3篇
- 2025年度智慧養(yǎng)老服務(wù)平臺建設(shè)與運營合同3篇
- 桐城師范高等??茖W(xué)?!侗硌莼A(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版板房租賃合同含物業(yè)管理及保潔服務(wù)3篇
- 四川文軒職業(yè)學(xué)院《機械工程材料B》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海紐約大學(xué)自主招生面試試題綜合素質(zhì)答案技巧
- 辦公家具項目實施方案、供貨方案
- 2022年物流服務(wù)師職業(yè)技能競賽理論題庫(含答案)
- ?;钒踩僮饕?guī)程
- 連鎖遺傳和遺傳作圖
- DB63∕T 1885-2020 青海省城鎮(zhèn)老舊小區(qū)綜合改造技術(shù)規(guī)程
- 高邊坡施工危險源辨識及分析
- 中海地產(chǎn)設(shè)計管理程序
- 簡譜視唱15942
- 《城鎮(zhèn)燃氣設(shè)施運行、維護和搶修安全技術(shù)規(guī)程》(CJJ51-2006)
- 項目付款審核流程(visio流程圖)
評論
0/150
提交評論