




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
通信學(xué)論文-工作站與PC之間進(jìn)程的實(shí)時通訊摘要該文簡要介紹了SUN工作站與PC之間進(jìn)行通訊的常用方法,著重論述了一種基于Socket編程,實(shí)現(xiàn)進(jìn)程間直接實(shí)時通訊的方法,并舉例說明。隨著計算機(jī)的日益普及和應(yīng)用領(lǐng)域的不斷擴(kuò)展,人們對計算機(jī)性能的要求也越來越高,特別是在科學(xué)計算、圖形圖像處理、網(wǎng)絡(luò)工程、計算機(jī)輔助設(shè)計和制造(CAD/CAM)以及軟件工程等領(lǐng)域。這些領(lǐng)域的要求對于一般的微型計算機(jī)來說是難以勝任的,而工作站的出現(xiàn)又恰好滿足了這些方面的需要。SUN工作站是工作站中的典型代表,由于它采用了RISC技術(shù)等一系列先進(jìn)的技術(shù)和方法,使得其性能價格比遠(yuǎn)遠(yuǎn)超出傳統(tǒng)的微、小型計算機(jī)系統(tǒng),因而具有很高的市場占有率。另一方面,IBMPC及其兼容機(jī)在我國也相當(dāng)普遍,它們在各行各業(yè)得到了廣泛的應(yīng)用,擁有眾多的用戶和軟硬件產(chǎn)品。如何將SUN工作站與PC這兩者之間有機(jī)地結(jié)合起來,使它們各盡其長,就成了一個非?,F(xiàn)實(shí)的問題。比如在分布式應(yīng)用系統(tǒng)中,由于PC擁有眾多像開關(guān)量和模擬量這樣的I/O接口板,因此可以用它作為工業(yè)控制現(xiàn)場中的下位機(jī),完成現(xiàn)場數(shù)據(jù)的實(shí)時采集與相關(guān)的控制操作;而用SUN工作站作為上位機(jī),進(jìn)行總的數(shù)據(jù)處理和分析。在這樣的分布式應(yīng)用系統(tǒng)中,SUN工作站與PC之間的通訊便是一個十分關(guān)鍵的問題。SUN工作站與PC之間的通訊可分為兩個方面:一是硬件連接,二是軟件編程。對于硬件連接,一般說來可有以下兩種作法,第一種是利用SUN工作站本身的RS-232/RS-423串口與PC的RS-232串口,進(jìn)行串行異步通訊。這種方法最大的優(yōu)點(diǎn)是成本低,缺點(diǎn)是數(shù)據(jù)傳輸速度慢,數(shù)據(jù)的查錯和糾錯工作需由用戶自己完成,另外還需對硬件直接編程。第二種方法是利用SUN工作站本身配備的以太網(wǎng)接口,這時要求也為PC配上一塊網(wǎng)絡(luò)接口卡,兩者通過同軸電纜相連,構(gòu)成以太網(wǎng),從而實(shí)現(xiàn)它們之間的通訊。這種方法的優(yōu)點(diǎn)是數(shù)據(jù)傳輸速度快,非常適合對實(shí)時性要求較高的應(yīng)用項(xiàng)目,再加上有系統(tǒng)軟件與編程工具軟件包的支持,因此編程工作相對來說也比較簡單。該方法的缺點(diǎn)是成本比第一種方法稍高一些。本文將著重介紹一下在第二種硬件連接方式下,即在以太網(wǎng)絡(luò)環(huán)境中,為了實(shí)現(xiàn)SUN工作站與PC之間的進(jìn)程通訊,在軟件上需要做的一些工作。我們知道,SUN工作站采用了一種稱為NFS(NetworkFileSystem)的分布式文件系統(tǒng),該系統(tǒng)最大的優(yōu)點(diǎn)是獨(dú)立于機(jī)型、操作系統(tǒng)以及網(wǎng)絡(luò)體系結(jié)構(gòu),實(shí)現(xiàn)了在異構(gòu)環(huán)境下的文件共享。在NFS系統(tǒng)的支持下,文件存取對用戶透明,即用戶使用網(wǎng)絡(luò)上文件的方法與使用本地文件的方法完全一致。為了實(shí)現(xiàn)PC與SUN工作站之間的文件共享,我們還必須在PC上安裝一套稱為PC-NFS的軟件,該軟件由SUN公司提供。在安裝完該軟件之后,PC的用戶就可以像使用本地上的軟、硬盤那樣使用SUN工作站上的文件了。到此為止,由于有了SUNNFS和PC-NFS這兩個系統(tǒng)軟件的相互配合,已經(jīng)可以完成SUN工作站與PC進(jìn)程之間的通訊,其通訊方式是通過文件共享。但這種方法在實(shí)際應(yīng)用中往往顯得速度不夠理想,而且由于需要依靠文件作媒介,因此在時間上和操作上造成的額外開銷較大。于是,我們有必要探索一種SUN工作站與PC之間的進(jìn)程不通過文件共享,而是直接進(jìn)行實(shí)時通訊的方法。作者通過一段時間的摸索與實(shí)踐,找到了一種可行的方案,現(xiàn)提出來供大家參考。這種實(shí)現(xiàn)進(jìn)程間直接通訊方法的實(shí)質(zhì)是在互連網(wǎng)域(InternetDomain)支持的TCP/IP協(xié)議下,進(jìn)行基于Socket(套接字)系統(tǒng)調(diào)用的程序設(shè)計。Socket是網(wǎng)絡(luò)在傳輸層上提供給應(yīng)用程序的接口,其目的主要是用來實(shí)現(xiàn)網(wǎng)絡(luò)上進(jìn)程之間的通訊。下面我們就通過一個具體的實(shí)例來詳細(xì)說明這一方法。由于Socket程序設(shè)計通常都使用ClientServer(客戶服務(wù)器)的模型,因此我們在具體實(shí)現(xiàn)上也遵循這一原則,把SUN工作站作為Server,PC作為Client,兩者在程序設(shè)計上分工不同。在本例中,我們要完成的任務(wù)是在工作站上的進(jìn)程與在PC上的進(jìn)程之間進(jìn)行雙向的數(shù)據(jù)傳輸,程序中分別各以一個字符串來代表實(shí)際要傳送的信息。由于Socket程序設(shè)計是一個較為復(fù)雜的問題,因此本文不作詳細(xì)論述,有關(guān)這方面的內(nèi)容請讀者參考相應(yīng)書籍(例如SUN公司的NetworkProgramming等)。我們在這里只把程序中需要注意的幾個問題向大家作一簡要說明。1.由于SUN工作站上的進(jìn)程屬于Server方,因此它必須首先運(yùn)行,等待來自PCClient方進(jìn)程的連接請求;2.工作站上的進(jìn)程運(yùn)行之后,首先會在屏幕上顯示一個端口(Port)號。端口號是TCP/IP協(xié)議標(biāo)識進(jìn)程地址的一個組成部分,因此工作站上進(jìn)程的端口號連同工作站的機(jī)器名稱(HostName)必須要送到PC上要與之進(jìn)行通訊的那個進(jìn)程,只有這樣,PC上的進(jìn)程才知道自己將要與哪一個進(jìn)程發(fā)生聯(lián)系。在本文給出的實(shí)例中采用了通過命令行參數(shù)傳遞信息的方法,當(dāng)然也可以使用其它方法;3.在上述實(shí)例程序中,進(jìn)程之間數(shù)據(jù)的傳輸使用了read()和write()函數(shù),但這兩個函數(shù)在用于Socket時與用于文件時的實(shí)際操作并不完全一樣。由于網(wǎng)絡(luò)本身傳輸特性的限制,它們很可能在一次調(diào)用中不能讀出或?qū)懭牒瘮?shù)參數(shù)中要求的那么多數(shù)據(jù)量。因此為了完成類似于文件操作read()和write()函數(shù)同樣的功能,我們專門編寫了兩個新的函數(shù)readpkt()和writepkt(),分幾次讀入或?qū)懗鲆?guī)定的字節(jié)數(shù);4.工作站上執(zhí)行的程序只要在工作站上編譯和連接后即可投入運(yùn)行,而在PC上運(yùn)行的程序必須要有SUN公司提供的PC-NFSProgramersToolkit軟件包的支持,該軟件包提供了與Socket調(diào)用有關(guān)的所有函數(shù)。本文PC上的程序是用BorlandC+3.0編譯程序編譯的,此外,該軟件包也支持MicrosoftC語言和MicrosoftWindows下應(yīng)用程序的編程。在生成可執(zhí)行代碼之后,即.EXE文件,就不再依賴該軟件包了,但仍要在PC-NFS系統(tǒng)支持下運(yùn)行。以上就是SUN工作站與PC進(jìn)程之間進(jìn)行實(shí)時通訊的一種方法。當(dāng)然,這里所說的“實(shí)時”也只是相對而言的,因?yàn)镾unOS操作系統(tǒng)屬于UNIX操作系統(tǒng)這一大類,而UNIX操作系統(tǒng)本身是一個分時的操作系統(tǒng),不可能有絕對的實(shí)時。但本文討論的這種方法在實(shí)際項(xiàng)目中經(jīng)過檢驗(yàn),已經(jīng)可以滿足實(shí)時性的要求,為SUN工作站與PC之間進(jìn)行高速的數(shù)據(jù)傳輸開辟了一條新路。最后需要說明的是,本文介紹的進(jìn)程之間實(shí)時通訊的方法不僅適用于SUN工作站與PC之間,而且也適用于連接到該以太網(wǎng)絡(luò)上的所有機(jī)器,其中包括SUN工作站與SUN工作站之間進(jìn)程的通訊,PC與PC之間進(jìn)程的通訊以及它們之間的任意組合。SUN工作站(即Server方)程序:程序文件名:SUN.C執(zhí)行方法:SUN#include#include#include#include#include#defineDATA1234567890main()intsock,length;structsockaddr-inserver;intmsgsock;charbuf;intreadpkt(),writepkt();sock=socket(AF-INET,SOCK-STREAM,0);IF(SOCK0)perror(openingstreamsocket);exit(1);server.sin-family=AF-INET;server.sin-addr.s-addr=INADDR-ANY;server.sin-port=0;if(bind(sock,(structsockaddr*)&server,sizeofserver)0)perror(bindingstreamsocket);exit(1);length=sizeofserver;if(getsockname(sock,(structsockaddr*)&server,&length)0)perror(gettingsocketname);exit(1);printf(Socketport#%d,ntohs(server.sin-port);listen(sock,5);msgsock=accept(sock,(structsockaddr*)0,(int*)0);if(msgsock=-1)perror(accept);exit(1);elsedobzero(buf,sizeofbuf);if(readpkt(msgsock,buf,1024)0)perror(readingstreammessage);break;prinft(%s,buf);strcpy(buf,DATA);if(writepkt(msgsock,buf,1024)0)perror(writingstreammessage);break;while(1);close(msgsock);close(sock);return0;intreadpkt(sock,buf,size)intsock;char*buf;intsize;intrest,readnum,count;count=0;rest=size-count;while(rest)readnum=read(sock,buf,rest);if(readnum0)returnreadnum;rest-=readnum;buf+=readnum;return(size-rest);intwritepkt(sock,buf,size)intsock;char*buf;intsize;intrest,writenum,count;count=0;rest=size-count;while(rest)writenumwrite(sock,buf,rest);if(writenum0)returnwritenum;rest-=writenum;buf+=writenum;return(size-rest);PC(即Client方)程序:程序文件名:PC.C執(zhí)行方法:PC#include#include#include#include#include#include#defineDA
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年緊急意外搶救預(yù)案試題
- 小學(xué)生英語游戲教學(xué)課件
- 思維導(dǎo)圖教學(xué)第三版課件
- 住宅小區(qū)地下車庫產(chǎn)權(quán)轉(zhuǎn)讓違約金規(guī)定合同
- 餐飲企業(yè)承包經(jīng)營合作協(xié)議范本
- 國家電網(wǎng)電氣安全作業(yè)知識相關(guān)內(nèi)容試卷
- 家用紡織品設(shè)計元素考核試卷
- 危險化學(xué)品倉儲安全應(yīng)急預(yù)案演練評估準(zhǔn)則考核試卷
- 培訓(xùn)評估與組織戰(zhàn)略匹配度分析考核試卷
- 燃料儲存罐材料考核試卷
- 2025年4月自考03346項(xiàng)目管理試題
- 艾梅乙反歧視培訓(xùn)課件
- 浙江省杭州市2024-2025學(xué)年高二下學(xué)期6月期末教學(xué)質(zhì)量檢測英語試題(含答案)
- 2025年河南省中考地理試題(含答案)
- 2025安全生產(chǎn)月一把手講安全公開課三十二(91P)
- 2025課件:紅色基因作風(fēng)建設(shè)七一黨課
- 在線網(wǎng)課學(xué)習(xí)課堂《人工智能(北理 )》單元測試考核答案
- 康復(fù)科護(hù)理管理制度
- 《中國近現(xiàn)代史綱要(2023版)》課后習(xí)題答案合集匯編
- 國家綜合性消防救援隊(duì)伍消防員管理規(guī)定
- 第6章_懸移質(zhì)泥沙運(yùn)動2014
評論
0/150
提交評論