版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工作站與PC之間進(jìn)程的實(shí)時(shí)通訊摘要該文簡(jiǎn)要介紹了sun工作站與p之間進(jìn)展通訊的常用方法,著重闡述了一種基于sket編程,實(shí)現(xiàn)進(jìn)程間直接實(shí)時(shí)通訊的方法,并舉例說明。隨著計(jì)算機(jī)的日益普及和應(yīng)用領(lǐng)域的不斷擴(kuò)展,人們對(duì)計(jì)算機(jī)性能的要求也越來越高,特別是在科學(xué)計(jì)算、圖形圖像處理、網(wǎng)絡(luò)工程、計(jì)算機(jī)輔助設(shè)計(jì)和制造(ad/a)以及軟件工程等領(lǐng)域。這些領(lǐng)域的要求對(duì)于一般的微型計(jì)算機(jī)來說是難以勝任的,而工作站的出現(xiàn)又恰好滿足了這些方面的需要。sun工作站是工作站中的典型代表,由于它采用了ris技術(shù)等一系列先進(jìn)的技術(shù)和方法,使得其性能價(jià)格比遠(yuǎn)遠(yuǎn)超出傳統(tǒng)的微、小型計(jì)算機(jī)系統(tǒng),因此具有很高的市場(chǎng)占有率。另一方面,ibp
2、及其兼容機(jī)在我國(guó)也相當(dāng)普遍,它們?cè)诟餍懈鳂I(yè)得到了廣泛的應(yīng)用,擁有眾多的用戶和軟硬件產(chǎn)品。如何將sun工作站與p這兩者之間有機(jī)地結(jié)合起來,使它們各盡其長(zhǎng),就成了一個(gè)非常現(xiàn)實(shí)的問題。比方在分布式應(yīng)用系統(tǒng)中,由于p擁有眾多像開關(guān)量和模擬量這樣的i/接口板,因此可以用它作為工業(yè)控制現(xiàn)場(chǎng)中的下位機(jī),完成現(xiàn)場(chǎng)數(shù)據(jù)的實(shí)時(shí)采集與相關(guān)的控制操作;而用sun工作站作為上位機(jī),進(jìn)展總的數(shù)據(jù)處理和分析。在這樣的分布式應(yīng)用系統(tǒng)中,sun工作站與p之間的通訊便是一個(gè)非常關(guān)鍵的問題。sun工作站與p之間的通訊可分為兩個(gè)方面:一是硬件連接,二是軟件編程。對(duì)于硬件連接,一般說來可有以下兩種作法,第一種是利用sun工作站本身的r
3、s-232/rs-423串口與p的rs-232串口,進(jìn)展串行異步通訊。這種方法最大的優(yōu)點(diǎn)是本錢低,缺點(diǎn)是數(shù)據(jù)傳輸速度慢,數(shù)據(jù)的查錯(cuò)和糾錯(cuò)工作需由用戶自己完成,另外還需對(duì)硬件直接編程。第二種方法是利用sun工作站本身裝備的以太網(wǎng)接口,這時(shí)要求也為p配上一塊網(wǎng)絡(luò)接口卡,兩者通過同軸電纜相連,構(gòu)成以太網(wǎng),從而實(shí)現(xiàn)它們之間的通訊。這種方法的優(yōu)點(diǎn)是數(shù)據(jù)傳輸速度快,非常合適對(duì)實(shí)時(shí)性要求較高的應(yīng)用工程,再加上有系統(tǒng)軟件與編程工具軟件包的支持,因此編程工作相對(duì)來說也比擬簡(jiǎn)單。該方法的缺點(diǎn)是本錢比第一種方法稍高一些。本文將著重介紹一下在第二種硬件連接方式下,即在以太網(wǎng)絡(luò)環(huán)境中,為了實(shí)現(xiàn)sun工作站與p之間的進(jìn)程
4、通訊,在軟件上需要做的一些工作。我們知道,sun工作站采用了一種稱為nfs(netrkfilesyste)的分布式文件系統(tǒng),該系統(tǒng)最大的優(yōu)點(diǎn)是獨(dú)立于機(jī)型、操作系統(tǒng)以及網(wǎng)絡(luò)體系構(gòu)造,實(shí)現(xiàn)了在異構(gòu)環(huán)境下的文件共享。在nfs系統(tǒng)的支持下,文件存取對(duì)用戶透明,即用戶使用網(wǎng)絡(luò)上文件的方法與使用本地文件的方法完全一致。為了實(shí)現(xiàn)p與sun工作站之間的文件共享,我們還必須在p上安裝一套稱為p-nfs的軟件,該軟件由sun公司提供。在安裝完該軟件之后,p的用戶就可以像使用本地上的軟、硬盤那樣使用sun工作站上的文件了。到此為止,由于有了sunnfs和p-nfs這兩個(gè)系統(tǒng)軟件的互相配合,已經(jīng)可以完成sun工作站與
5、p進(jìn)程之間的通訊,其通訊方式是通過文件共享。但這種方法在實(shí)際應(yīng)用中往往顯得速度不夠理想,而且由于需要依靠文件作媒介,因此在時(shí)間上和操作上造成的額外開銷較大。于是,我們有必要探究一種sun工作站與p之間的進(jìn)程不通過文件共享,而是直接進(jìn)展實(shí)時(shí)通訊的方法。作者通過一段時(shí)間的探究與理論,找到了一種可行的方案,現(xiàn)提出來供大家參考。這種實(shí)現(xiàn)進(jìn)程間直接通訊方法的本質(zhì)是在互連網(wǎng)域(internetdain)支持的tp/ip協(xié)議下,進(jìn)展基于sket(套接字)系統(tǒng)調(diào)用的程序設(shè)計(jì)。sket是網(wǎng)絡(luò)在傳輸層上提供應(yīng)應(yīng)用程序的接口,其目的主要是用來實(shí)現(xiàn)網(wǎng)絡(luò)上進(jìn)程之間的通訊。下面我們就通過一個(gè)詳細(xì)的實(shí)例來詳細(xì)說明這一方法。
6、由于sket程序設(shè)計(jì)通常都使用lientserver(客戶效勞器)的模型,因此我們?cè)谠敿?xì)實(shí)現(xiàn)上也遵循這一原那么,把sun工作站作為server,p作為lient,兩者在程序設(shè)計(jì)上分工不同。在本例中,我們要完成的任務(wù)是在工作站上的進(jìn)程與在p上的進(jìn)程之間進(jìn)展雙向的數(shù)據(jù)傳輸,程序中分別各以一個(gè)字符串來代表實(shí)際要傳送的信息。由于sket程序設(shè)計(jì)是一個(gè)較為復(fù)雜的問題,因此本文不作詳細(xì)闡述,有關(guān)這方面的內(nèi)容請(qǐng)讀者參考相應(yīng)書籍(例如sun公司的netrkprgraing等)。我們?cè)谶@里只把程序中需要注意的幾個(gè)問題向大家作一簡(jiǎn)要說明。1.由于sun工作站上的進(jìn)程屬于server方,因此它必須首先運(yùn)行,等待來自
7、plient方進(jìn)程的連接懇求;2.工作站上的進(jìn)程運(yùn)行之后,首先會(huì)在屏幕上顯示一個(gè)端口(prt)號(hào)。端口號(hào)是tp/ip協(xié)議標(biāo)識(shí)進(jìn)程地址的一個(gè)組成局部,因此工作站上進(jìn)程的端口號(hào)連同工作站的機(jī)器名稱(hstnae)必需要送到p上要與之進(jìn)展通訊的那個(gè)進(jìn)程,只有這樣,p上的進(jìn)程才知道自己將要與哪一個(gè)進(jìn)程發(fā)生聯(lián)絡(luò)。在本文給出的實(shí)例中采用了通過命令行參數(shù)傳遞信息的方法,當(dāng)然也可以使用其它方法;3.在上述實(shí)例程序中,進(jìn)程之間數(shù)據(jù)的傳輸使用了read()和rite()函數(shù),但這兩個(gè)函數(shù)在用于sket時(shí)與用于文件時(shí)的實(shí)際操作并不完全一樣。由于網(wǎng)絡(luò)本身傳輸特性的限制,它們很可能在一次調(diào)用中不能讀出或?qū)懭牒瘮?shù)參數(shù)中要
8、求的那么多數(shù)據(jù)量。因此為了完成類似于文件操作read()和rite()函數(shù)同樣的功能,我們專門編寫了兩個(gè)新的函數(shù)readpkt()和ritepkt(),分幾次讀入或?qū)懗鲆?guī)定的字節(jié)數(shù);4.工作站上執(zhí)行的程序只要在工作站上編譯和連接后即可投入運(yùn)行,而在p上運(yùn)行的程序必需要有sun公司提供的p-nfsprgraerstlkit軟件包的支持,該軟件包提供了與sket調(diào)用有關(guān)的所有函數(shù)。本文p上的程序是用brland+3.0編譯程序編譯的,此外,該軟件包也支持irsft語言和irsftinds下應(yīng)用程序的編程。在生成可執(zhí)行代碼之后,即.exe文件,就不再依賴該軟件包了,但仍要在p-nfs系統(tǒng)支持下運(yùn)行。
9、以上就是sun工作站與p進(jìn)程之間進(jìn)展實(shí)時(shí)通訊的一種方法。當(dāng)然,這里所說的“實(shí)時(shí)也只是相對(duì)而言的,因?yàn)閟uns操作系統(tǒng)屬于unix操作系統(tǒng)這一大類,而unix操作系統(tǒng)本身是一個(gè)分時(shí)的操作系統(tǒng),不可能有絕對(duì)的實(shí)時(shí)。但本文討論的這種方法在實(shí)際工程中經(jīng)過檢驗(yàn),已經(jīng)可以滿足實(shí)時(shí)性的要求,為sun工作站與p之間進(jìn)展高速的數(shù)據(jù)傳輸開拓了一條新路。最后需要說明的是,本文介紹的進(jìn)程之間實(shí)時(shí)通訊的方法不僅適用于sun工作站與p之間,而且也適用于連接到該以太網(wǎng)絡(luò)上的所有機(jī)器,其中包括sun工作站與sun工作站之間進(jìn)程的通訊,p與p之間進(jìn)程的通訊以及它們之間的任意組合。sun工作站(即server方)程序:程序文件名
10、:sun.執(zhí)行方法:sun#inludesys/types.h#inludesys/sket.h#inludenetinet/in.hbr#inludenetdb.h#inludestdi.h#definedata1234567890ain()intsk,length;strutskaddr-inserver;intsgsk;harbuf;intreadpkt(),ritepkt();sk=sket(af-inet,sk-strea,0);if(sk0)perrr(peningstreasket);exit(1);server.sin-faily=af-inet;server.sin-addr
11、.s-addr=inaddr-any;server.sin-prt=0;if(bind(sk,(strutskaddr*)server,sizefserver)0)perrr(bindingstreasket);exit(1);length=sizefserver;if(getsknae(sk,(strutskaddr*)server,length)0)perrr(gettingsketnae);exit(1);printf(sketprt#%d,nths(server.sin-prt);listen(sk,5);sgsk=aept(sk,(strutskaddr*)0,(int*)0);if
12、(sgsk=-1)perrr(aept);exit(1);elsedbzer(buf,sizefbuf);if(readpkt(sgsk,buf,1024)0)perrr(readingstreaessage);break;prinft(%s,buf);strpy(buf,data);if(ritepkt(sgsk,buf,1024)0)perrr(ritingstreaessage);break;hile(1);lse(sgsk);lse(sk);return0;intreadpkt(sk,buf,size)intsk;har*buf;intsize;intrest,readnu,unt;u
13、nt=0;rest=size-unt;hile(rest)readnu=read(sk,buf,rest);if(readnu0)returnreadnu;rest-=readnu;buf+=readnu;return(size-rest);intritepkt(sk,buf,size)intsk;har*buf;intsize;intrest,ritenu,unt;unt=0;rest=size-unt;hile(rest)ritenurite(sk,buf,rest);if(ritenu0)returnritenu;rest-=ritenu;buf+=ritenu;return(size-
14、rest);p(即lient方)程序:程序文件名:p.執(zhí)行方法:psun工作站名稱sun進(jìn)程端口號(hào)#inludesys/tk-types.h#inludesys/sket.h#inludenetinet/in.h#inludenetdb.h#inludestdi.h#inludestring.h#definedataabdefghijklnpqrstuvxyzain(arg,argv)intarg;har*argv;intsk;strutskaddr-inserver;struthstent*hp,*gethstbynae();harbuf;intreadpkt(),ritepkt();sk=
15、sket(pf-inet,sk-strea,0);if(sk0)perrr(peningstreasket);exit(1);server.sin-faily=af-inet;hp=gethstbynae(argv);if(hp=0)fprintf(stderr,%s:unknnhst.,argv);exit(2);epy(har*)server.sin-addr,(har*)hp-h-addr,hp-h-length);server.sin-prt=htns(ati(argv);if(nnet(sk,(strutskaddr*)server,sizefserver)0)perrr(nneti
16、ngstreasket);exit(1);.dstrpy(buf,data);if(ritepkt(sk,buf,1024)0)perrr(ritingnstreasket);break;eset(buf,0,1024);if(readpkt(sk,buf,1024)0)perrr(readingfrstreasket);break;printf(%s,buf);hile(1);lse(sk);return0;intreadpkt(sk,buf,size)intsk;har*buf;intsize;intrest,readnu,unt;unt=0;rest=size-unt;hile(rest)readnu=read(sk,buf,rest);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省蕪湖市無為市部分學(xué)校2025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試地理試卷(含答案)
- 文明停車題庫(kù)及答案
- 網(wǎng)約外賣題庫(kù)及答案
- 初中數(shù)學(xué)知識(shí)一本全課件
- 數(shù)媒技能考試題目及答案
- 三基基本操作試題及答案
- 2025~2026學(xué)年濟(jì)南市天橋區(qū)七年級(jí)歷史第一學(xué)期期末考試試題以及答案
- 2025屆浙江省精誠(chéng)聯(lián)盟高三下學(xué)期二模物理試題(含答案)
- 廣西柳州市2024-2025學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案)
- 氫能燃料電池咨詢專屬委托合同
- 國(guó)家自然基金形式審查培訓(xùn)
- 2026馬年卡通特色期末評(píng)語(45條)
- NCCN臨床實(shí)踐指南:肝細(xì)胞癌(2025.v1)
- 免租使用協(xié)議書
- ?;穾?kù)區(qū)風(fēng)險(xiǎn)動(dòng)態(tài)評(píng)估-洞察與解讀
- 激光焊接技術(shù)規(guī)范
- 消防聯(lián)動(dòng)排煙天窗施工方案
- 2025年高考物理 微專題十 微元法(講義)(解析版)
- 2025年國(guó)家能源投資集團(tuán)有限責(zé)任公司校園招聘筆試備考題庫(kù)含答案詳解(新)
- 形位公差培訓(xùn)講解
- 醫(yī)學(xué)影像肺部結(jié)節(jié)診斷與處理
評(píng)論
0/150
提交評(píng)論