标题:VB Winsock连接的问题
只看楼主
mmy19811217
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-16
结帖率:0
 问题点数:0 回复次数:5 
VB Winsock连接的问题
请问大家,我想使用Winsock连接几个服务器的IP地址,然后发送同一个命令,如何才能做到一个一个自动连接,就是说,连接第一个后发送命令,然后发送断开命令,当程序接收到断开命令后会自动连接第二个IP然后执行同样的命令,以此类推。
搜索更多相关主题的帖子: IP地址 服务器 如何 
2015-08-02 13:36
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
首先,服务器IP 放一个数组。
      与服务器的通讯状态也放一个数组。

使用定时器设置超时控制,使用 WINSOCK 连接和收到数据来修改与服务器的通讯状态以及下一步的操作。

授人于鱼,不如授人于渔
早已停用QQ了
2015-08-02 16:58
mmy19811217
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-16
得分:0 
回复 2楼 风吹过b
可以给个具体代码的例子吗?
2015-08-03 00:18
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
楼主能给出几个用于测试的服务器地址和相关命令吗?不然大神们很难做出符合你要求的代码的。

能编个毛线衣吗?
2015-08-03 10:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
手头上没有合适的例子。只能说明一下。

首先,按你的要求,服务器的状态应该分为:
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

----------------------------------------------
原则:有事件的,在事件里处理,没有事件的,通过定时器能检测到的,就在定时器里处理。
每次处理后,都修改状态。
定时器,除下超时外,每次都要检测 连接情况和当前服务器操作的状态。以便采取相应的处理方式。

授人于鱼,不如授人于渔
早已停用QQ了
2015-08-03 11:20
liuxiang726
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-4
得分:0 
这个问题有待学习中
2015-08-04 12:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455988-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032793 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved