系统采用Client/Server模式。通过以太网转串口模块的配置软件,将该模块设置成服务器模式,而主控计算机上的控制软件部分为客户端,每次启动由主控计算机主动连接执行机构。客户端和服务器采用面向连接的通信协议:控制计算机和模块之间会建立一个虚拟连接,这个连接一旦建立,客户端和服务器之间就可以把数据当作一个双向字节流进行交换;如果连接建立不成功,则不会发送数据。另外,面向连接传输的每一个报文都需要接收端确认,未确认报文被认为是出错的报文。
3.1 通信过程
Socket有同步阻塞方式和异步非阻塞方式两种使用,本系统应用程序中创建了继承于CAsyncSocket类的TestSocket类,它是一个异步非阻塞Socket封装类。
由于已经将以太网转串口模块设置为服务器模式,所以,主控计算机段的程序是作为客户端出现的,该程序的编写大致按照以下步骤进行:
1) 首先调用WSAStartup函数来初始化套接字库。
2) 调用socket函数来创建一个套接字。
3) 调用connect函数连接服务器,发出连接请求
4) 服务器响应连接请求后,与服务器开始进行交互操作(接收、发送数据等),直到请求结束。
5) 调用closesocket关闭套接字,释放套接字资源。
6) 调用WSACleanup函数释放相应资源。
客户端程序与服务器的通信过程如图3所示:
图3:面向连接服务的socket调用模型
在以太网转串口模块中,服务器程序调用listen函数将此socket置于监听状态,让这个socket对进来的连接进行监听并确认连接请求。当服务器端监听到来自客户端的连接请求后,一个正在监听的socket将给将给每个请求发送一个确认信息,然后调用accept函数,接着,面向连接的客户通过调用connect函数启动网络对话。在客户端和服务器端建立连接以后,双方就可以通过send和recv或其它面向连接的Socket API函数进行网络通信了。