工作站与PC之间进程的实时通讯_第1页
工作站与PC之间进程的实时通讯_第2页
工作站与PC之间进程的实时通讯_第3页
工作站与PC之间进程的实时通讯_第4页
工作站与PC之间进程的实时通讯_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、工作站与PC之间过程的实时通信摘要该文简要介绍了sun工作站与p之间举止通信的经常使用要收,侧重讲讲了一种基于sket编程,真现过程间间接实时通信的要收,并举例分析。跟着策画机的日趋广泛战使用范围的没有竭扩大,人们对策画机机能的要供也越去越下,特别是正在科教策画、图形图象处理、搜集工程、策画机协助方案战制制(ad/a)和硬件工程等范围。那些范围的要供对于一样仄居的微型策画机去讲是易以胜任的,而工作站的呈现又恰好开意了那些圆里的需要。sun工作站是工作站中的范例代表,因为它采与了ris妙技等一系列后代的妙技战要收,使得其机能价格比近近超越传统的微、小型策画机系统,果此具有很下的市场占有率。另外一

2、圆里,ibp及其兼容机正在我国也相等广泛,它们正在各止各业获得了广泛的使用,具有众多的用户战硬硬件产品。如何将sun工作站与p那二者之间有机天结开起去,使它们各尽其少,便成了一个非常真践的标题问题。比方正在分布式使用系统中,因为p具有众多像开闭量战模拟量多么的i/接心板,果此可以用它做为财产操做现场中的下位机,完成现场数据的实时网罗与相闭的操做操做;而用sun工作站做为上位机,举止总的数据处理战阐收。正在多么的分布式使用系统中,sun工作站与p之间的通信即是一个非常闭键的标题问题。sun工作站与p之间的通信可分为两个圆里:一是硬件毗邻,两是硬件编程。对于硬件毗邻,一样仄居讲去可有以下两种做法,

3、第一种是操做sun工作站本人的rs-232/rs-423串心与p的rs-232串心,举止串止同步通信。那种要收最年夜的优面是本钱低,缺陷是数据传输速度缓,数据的查错战纠错工作需由用户本人完成,其中借需对硬件间接编程。第两种要收是操做sun工作站本人拆备的以太网接心,那时要供也为p配上一块搜集接心卡,二者经由过程同轴电缆相连,组成以太网,从而真现它们之间的通信。那种要收的优面是数据传输速度快,非常恰当对实时性要供较下的使用工程,再减上有系统硬件与编程工具硬件包的支撑,果此编程工作相对去讲也比较简朴。该要收的缺陷是本钱比第一种要收稍下一些。本文将侧重介绍一下正在第两种硬件毗邻方法下,即正在以太搜集

4、状况中,为了真现sun工作站与p之间的过程通信,正在硬件上需要做的一些工作。我们晓得,sun工作站采与了一种称为nfs(netrkfilesyste)的分布式文件系统,该系统最年夜的优面是自力于机型、操做系统和搜集系统规划,真现了正在同构状况下的文件同享。正在nfs系统的支撑下,文件存与对用户通明,即用户操做搜集上文件的要收与操做本天文件的要收完好划一。为了真现p与sun工作站之间的文件同享,我们借必须正在p上安拆一套称为p-nfs的硬件,该硬件由sun公司供给。正在安拆完该硬件以后,p的用户便可以像操做本天上的硬、硬盘那样操做sun工作站上的文件了。到此为止,因为有了sunnfs战p-nfs

5、那两个别系硬件的互相配开,曾经可以完成sun工作站与p过程之间的通信,其通信方法是经由过程文件同享。但那种要收正在真践使用中常常隐得速度没有够理想,而且因为需要依托文件做前止,果此正在工夫上战操做上形成的额中开消较年夜。因此,我们有需要探供一种sun工作站与p之间的过程欠亨过文件同享,而是间接举止实时通信的要收。做者经由过程一段工夫的探供与理论,觅到了一种可止的方案,现提出去供大家参考。那种真现过程间间接通信要收的本质是正在互连网域(internetdain)支撑的tp/ip战谈下,举止基于sket(套接字)系统挪用的程序方案。sket是搜集正在传输层上供给给使用程序的接心,其目的主假设用去真

6、现搜集上过程之间的通信。上里我们便经由过程一个详细的真例去详细分析那一要收。因为sket程序方案但凡皆操做lientserver(客户处事器)的模型,果此我们正在详细真现上也按照那一本那么,把sun工作站做为server,p做为lient,二者正在程序方案上合作没有同。正在本例中,我们要完成的任务是正在工作站上的过程与正在p上的过程之间举止单背的数据传输,程序中分别各以一个字符串去代表真践要传支的疑息。因为sket程序方案是一个较为庞年夜的标题问题,果此本文没有做详细讲讲,有闭那圆里的内容请读者参考响应书籍(例如sun公司的netrkprgraing等)。我们正在那里只把程序中需要注意的几个标

7、题问题背大家做一简要分析。1.因为sun工作站上的过程属于server圆,果此它必须起尾运转,等待去自plient圆过程的毗邻恳供;2.工作站上的过程运转以后,起尾会正在屏幕上表示一个端心(prt)号。端心号是tp/ip战谈标识过程所在的一个组成局部,果此工作站上过程的端心号连同工作站的机器称号(hstnae)必需要支到p上要与之举止通信的阿谁过程,只需多么,p上的过程才晓得本人将要与哪个过程收死联络。正在本文给出的真例中采与了经由过程命令止参数传递疑息的要收,当然也可以操做其中要收;3.正在上述真例程序中,过程之间数据的传输操做了read()战rite()函数,但那两个函数正在用于sket时

8、与用于文件时的真践操做其真没有完好一样。因为搜集本人传输特征的限制,它们很年夜要正在一次挪用中没有能读出或写进函数参数中要供的那末年夜皆据量。果此为了完成一样于文件操做read()战rite()函数一样的成效,我们特地编写了两个新的函数readpkt()战ritepkt(),分几次读进或写出规定的字节数;4.工作站上真止的程序只需正在工作站上编译战毗邻后便可投进运转,而正在p上运转的程序必需要有sun公司供给的p-nfsprgraerstlkit硬件包的支撑,该硬件包供给了与sket挪用有闭的局部函数。本文p上的程序是用brland+3.0编译程序编译的,其中,该硬件包也支撑irsft语止战i

9、rsftinds下使用程序的编程。正在天死可真止代码以后,即.exe文件,便没有再依托该硬件包了,但仍要正在p-nfs系统支撑下运转。以上便是sun工作站与p过程之间举止实时通信的一种要收。当然,那里所讲的“实时也只是相对而止的,因为suns操做系统属于unix操做系统那一年夜类,而unix操做系统本人是一个分时的操做系统,没有成能有尽对的实时。但本文会商的那种要收正在真践工程中经过检验,曾经可以开意实时性的要供,为sun工作站与p之间举止下速的数据传输开收了一条新路。终了需要分析的是,本文介绍的过程之间实时通信的要收没有单真用于sun工作站与p之间,而且也真用于毗邻到该以太搜集上的局部机器,

10、其中包含sun工作站与sun工作站之间过程的通信,p与p之间过程的通信和它们之间的尽情组开。sun工作站(即server圆)程序:程序文件名:sun.真止要收: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)p

11、errr(peningstreasket);exit(1);server.sin-faily=af-inet;server.sin-addr.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

12、(server.sin-prt);listen(sk,5);sgsk=aept(sk,(strutskaddr*)0,(int*)0);if(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);ret

13、urn0;intreadpkt(sk,buf,size)intsk;har*buf;intsize;intrest,readnu,unt;unt=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,b

14、uf,rest);if(ritenu0)returnritenu;rest-=ritenu;buf+=ritenu;return(size-rest);p(即lient圆)程序:程序文件名:p.真止要收:psun工作站称号sun过程端心号#inludesys/tk-types.h#inludesys/sket.h#inludenetinet/in.h#inludenetdb.h#inludestdi.h#inludestring.h#definedataabdefghijklnpqrstuvxyzain(arg,argv)intarg;har*argv;intsk;strutskaddr-in

15、server;struthstent*hp,*gethstbynae();harbuf;intreadpkt(),ritepkt();sk=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=ht

16、ns(ati(argv);if(nnet(sk,(strutskaddr*)server,sizefserver)0)perrr(nnetingstreasket);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,re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论