发表于:2004-09-23 02:08:00
1楼
没错,是通过Socket,下面介绍一下SARO-DTU的Manylink
(一点对多点)版程序的连接过程,可以参考!
1.确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是SARO-1010P为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(SARO-1010P在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。
2.使用TCP协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段:
1).连接建立阶段:
连接的建立又有主动连接和被动连接之分,一般来说客户机都是主动发起连接的,而服务器是被动接受连接的。所谓的主动连接是指本方主动向远端发起连接请求, 而被动连接指的是本方侦听一个端口,等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。在连接成功,切换到数据态后,我们可以通过OPEN命令帧控制SARO-1010P 进行主动连接。当然,连接时要指定对方的IP地址和端口号。至于被动连接,SARO-1010P也可以支持,目前的程序只支持侦听一个端口。对方主动连接(SARO-1010P被动连接)成功后将建立一条新的通信连接,SARO-1010P将把这个被动连接成功的事件通知给上位机。
2).数据收发阶段:
当一条连接建立之后,我们就可以在这条连接上进行数据收发了。
我们可以使用SEND命令帧控制SARO-1010P进行数据发送。当然,发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。
对于对方发送过来的数据,SARO-1010P首先将其存储在自身的数据缓冲区中,然后将数据已到达此事件通知给上位机,上位机读取到数据已到达事件后,应当及时使用RECV命令帧控制SARO-1010P将相应连接上的所有数据通过串口读出,当数据读出后,这些数据原先占用的数据缓冲区空间将会被释放。
3).挂断连接阶段:
当一条连接上的所有数据都已经收发完成了,不再需要这条连接时,就可以把连接给挂断了。和连接建立阶段相类似,挂断也分为主动挂断和被动挂断。我们可以使用RSET命令帧控制SARO-1010P进行连接的主动挂断。如果连接被对方主动挂断,SARO-1010P将会把这个事件通知给上位机进行处理。