VB6做一个自动登录路由器
VB6做一个自动登录路由器(2009-09-04 14:52:37)
转载
要用VB6做一个自动登录路由器,提取设备状态的程序,研究了一下如何利用VB进行telnet的工作。
本来以为telnet很简单,客户端把登录帐号和命令发过去,对端返回结果就行了。其实在telnet过程中,双方还会互相发送一些命令,这些命令有些大概的作用是通知、协商或者控制。 一、TELNET协议简介 1、参考 telnet的命令格式大概是这样,分3个或4个字段,每个字段一个字节。 前导 命令 选项 [子选项 ] 下面是详细资料: (1)前导 (2)命令 (3) 选项 2、协商 在telnet会话发起的时候,双方会有一些协商工作,251(WILL)、252(WONT)、253(DO)、254(DONT)这4个命令就是 用来协商的。远端会主动发送一些协商信息,有些设备只是向客户端发送一些通知信息,而有些设备非要客户端进行协商确认以后才能进行下一步的登录工作。 下面是一些厂家设备发送过来的协商命令实例,及需要客户端需要进行的确认工作(为便于查看,所有的字段全都用花括号扩了起来): AIX : {Iac}{Dont}{37}{Iac}{Do}{24} 二、利用Winsock控件访问网络 1、Winsock状态 (0) = "sckClosed" '缺省的,关闭 2、连接远端服务器 Winsock1.RemoteHost = "xxx.xxx.xxx.xxx" 连接成功后,会触发Winsock1_Connect事件,同时State成为sckConnected 如果连接超时,会触发错误号为10060 的Winsock1_Error事件 3、和远端服务器断开 本地主动断开 Winsock1.Close 本地主动断开连接不会主动触发Winsock1_Close事件,可以根据State=sckClosed 判断是否成功断开。 远端主动断开 远端主动断开连接触发Winsock1_Close事件,同时state成为sckClosing,需要执行Winsock1.Close来完成断开操作。 如果长时间没有数据交换,会产生超时错误,会触发错误号为10053 的Winsock1_Error事件 4、接收数据 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long ) 客户端收到数据后会触发Winsock1_DataArrival事件,将所有数据读入byte数组后进行处理。 5、发送数据 Winsock1.SendData string SendData方法可以发送多种类型的数据,需要注意的是对于32-127之间的字符可以利用字符串的方式发送,但是对于telnet的命令,通过chr$(255) & chr$(252) & chr$(24)这种拼接成字符串再发送的方式是不行的,必须把这些字符一个一个发送出去 ,网上有个MyTelnet的VB实例程序,对各种telnet命令都有比较完整的响应,但是是用拼接字符串的方式实现的,所以程序一直不能运行。我还没有试验是否可以利用byte array的方式发送。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |