1.1.网络通信
VxWorks提供了强大的网络功能,能与其它许多主机系统进行通信。网络完全兼容4.3BSD,也兼容SUN公司的NFS。这种广泛的协议支持在主机和VxWorksh目标机之间提供了无缝的工作环境,任务可通过网络向其它系统的主机存取文件,即远程文件存取,也支持远程过程调用。通过以太网,采用TCP/IP和UDP/IP协议在不同主机之间传送数据。
VxWorks提供了如下一些网络工具完成信息传送:
Ÿ Sockets
完成运行在VxWorks系统或其它系统之间任务的消息传送;
Ÿ 远程过程调用(RPC)
允许任务调用另一主机(运行的系统为VxWorks或是其它)上的过程。
Ÿ 远程文件存取
VxWorks任务可采用NFS、RSH、FTP、TFTP等方式远程存取主机文件。
Ÿ 文件输出
Ÿ 远程执行命令
VxWorks任务可通过网络激活主机系统中的命令。
VxWorks网络组件结构如下:
1.1.1.套接口(Sockets)
Vxworks系统和网络协议的接口是靠套接字(sockets)来实现的。Sockets规范是得到广泛应用的、开放的、支持多种协议的网络编程接口。通讯的基石是套接口,一个通讯口是套接的一端,在这一端上你可以找到其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的任务。套接口存在于通讯域中。通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。套接口通常和同一个域中的套接口交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各个任务使用这个域互相之间用Internet协议来进行通讯。
套接口可以根据通讯性质分类。应用程序一般仅在同一类的套接口间通讯。不过只要底层的通信协议允许,不同类型的套接口间也照样可以通信。用户目前使用两种套接口,即流套接口(采用TCP协议)和数据报套接口(采用UDP协议)。流套接口提供了双向的、有序的、无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠、有序、无重复的。也就是说,一个从数据报套接口接收信息的任务有可能发现信息重复了,或者和发出时的顺序不同。数据报套接口的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。
套接口(socket)通信的最大优点是:过程间的通信是完全对等的,不管网络中过程的定位或主机所运行的操作系统。一般来说,流套套接口提供了可靠的面向连接的服务,应用较广泛。其应用程序时序图如下:
Socket函数:
socket() 创建一个套接口
bind() 给套接口分配名称
listen() 打开TCP套接口连接
accept() 完成套接口间连接
connect() 请求连接套接口
shutdown() 关闭套接口间连接
send() 向TCP套接口发送数据
recv() 从TCP套接口接收数据
select() 完成同步I/O传输
read() 从套接口读取信息
write() 向套接口写入信息
ioctl() 完成对套接口的控制
close() 关闭套接口