目前,机器人遥操作系统已成为机器人研究的一个热点。在机器人遥操作的过程中,本地服务器与远程客户机之间的网络通信问题是遥操作的关键环节。针对机器人遥操作的通信问题,本文设计了一种在Windows XP环境下,运用Socket实现的基于TCP/IP协议的网络通信平台。
1 Socket编程原理
1.1 Socket简介
Socket(套接字)最初是加州大学伯克利分校为UNIX操作系统开发的网络通信接口。后来Intel, Microsoft, Sun等网络厂商将其移植到Windows中,形成了Windows Sockets规范,它定义了一套Windows环境下网络编程的接口。利用Windows Socket开发的网络通信程序的层次结构如图1示。
图1 Sockets编程的结构
根据传输数据类型的不同,Sockets可分为流式套接字(SOCK_STREAM)和数据报式套接字(SOCK_DGRAM)两类。流式套接字提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接受。流式套接字实际上是基于TCP协议实现的。数据报式套接字提供无连接服务。数据报以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接受顺序混乱。数据报套接字实际上是基于UDP协议实现的。
按照套接字在客户机/服务器(Client/ Server)模式中的功能可将其分为两类:
监听套接字:该套接字位于服务器端,它的主要功能就是对特定的端口进行不断的监听,当检测到有连接请求时,接受申请,并构造一个新的客户端套接字,与连接申请方的客户端套接字建立连接,从而为双方的通信做好准备。
客户端套接字:该套接字是用来进行网络通信的实体。它位于客户机和服务器上,服务器必须维持它为之服务的客户一样数量的这种套接字,形成一个以服务器为中心的星型结构。
1.2 TCP网络通信平台设计步骤
基于Internet的机器人遥操作技术是现代网络技术和机器人控制技术的结合,Internet使用网际分组交换协议TCP/IP作为通信规范,它包括 TCP, UDP和ICMP等协议。其中TCP协议是面向连接的协议,要求在数据交换以前必须与通信方建立一条连接、它具有分段和重组功能,能够确保数据可靠、有序地传输。
TCP通信整个过程可以分成三个阶段:连接建立、数据传输和拆除连接。
(1)连接建立阶段:首先服务器中的监听套接字对断口进行侦听,客户端的套接字向服务器端的特定断口提出连接申请。
(2)通信阶段:这是整个过程的核心部分,任务就是负责数据的收发。
(3)拆除连接阶段:在传完数据之后,关闭套接字,释放所分配的资源。
使用Soeket编写TCP通信程序的主要步骤如下:
1) 构造 Soeket对象 ;
2) 使用该对象构造基本的Socket句柄。由于遥操作的数据通信要求可靠,准确,故采用TCP协议,套接字使用流式套接字;
3) 建立客户机CSocket,调用Connect()建立与服务器套接字的连接.服务器调用Listen()监听请求连接情况,并在收到客户端请求后调用Accept()接收客户端连接.
4) 构造CSocketFile对象,并使用CSocket对象与之关联.
5) 构造CArchive对象 ,用于接受和发送数据。使用CArchive对象来进行客户端与服务器端之间的Socket通信
6) 通信结束,关闭套接字,退出程序。
2 TCP网络通信平台程序的实现
本程序是为机器人遥操作的通信所搭建的一个网络通信平台,该平台实现了本地服务器与远程客户机之间的数据网络通信,系统结构图如图2所示。
图2 遥操作系统结构图