注册 登录
编程论坛 VB6论坛

VB Winsock连接的问题

mmy19811217 发布于 2015-08-02 13:36, 811 次点击
请问大家,我想使用Winsock连接几个服务器的IP地址,然后发送同一个命令,如何才能做到一个一个自动连接,就是说,连接第一个后发送命令,然后发送断开命令,当程序接收到断开命令后会自动连接第二个IP然后执行同样的命令,以此类推。
5 回复
#2
风吹过b2015-08-02 16:58
首先,服务器IP 放一个数组。
      与服务器的通讯状态也放一个数组。

使用定时器设置超时控制,使用 WINSOCK 连接和收到数据来修改与服务器的通讯状态以及下一步的操作。
#3
mmy198112172015-08-03 00:18
回复 2楼 风吹过b
可以给个具体代码的例子吗?
#4
wmf20142015-08-03 10:42
楼主能给出几个用于测试的服务器地址和相关命令吗?不然大神们很难做出符合你要求的代码的。
#5
风吹过b2015-08-03 11:20
手头上没有合适的例子。只能说明一下。

首先,按你的要求,服务器的状态应该分为:
1、未连接
2、正在连接
3、发命令
4、收到发命令回复
5、发断开命令
6、收到断开命令回复
7、正在断开
8、已断开
9、操作错误
10、各步的错误,这里就不列了。

初始化时,每个服务器状态初始化为 1
定时器检索到 当前连接为 空。
取服务器状态,如果这里第一个服务器的状态是1,那么保存这第一个服务器的序号。后面都需要使用到这个序号
那么定时器就 连接第一个服务器, 状态置 2,同时超时计数开始。
当服务器连上后,有一个事件,里面就发送命令,同时置状态为 3 ,超时计数复位。重试计数复位。
收到数据后,有一个事件,判断事件,确认是否成功,如果不成功,重发命令,超时计数复位。入重初计数+1。
  判断状态,如果状态为 3,并且重试计数超过,置 状态为 9。 关闭连接。
 判断事件成功,状态为 3 ,置状态为 4 。然后发断开命令置状态为 5
              状态为 5  ,置状态 6,然后关闭连接,置状态为7
连接断开成功,置状态为 8 ,这个可以由定时器里扫描。

定时器超时计数超时,根据状态,3 ,重发命令,重试计数+1,5,重发断开命令,重试计数+1.
如果重试计数超过,置状态 9 ,关闭连接。

如果没有命令返回怎么办?
那就在定时器里判断状态,
如 状态为3,那么就发送关闭连接命令,置状态为7

----------------------------------------------
原则:有事件的,在事件里处理,没有事件的,通过定时器能检测到的,就在定时器里处理。
每次处理后,都修改状态。
定时器,除下超时外,每次都要检测 连接情况和当前服务器操作的状态。以便采取相应的处理方式。
#6
liuxiang7262015-08-04 12:15
这个问题有待学习中
1