VB6做一个自动登录路由器
来源:互联网 发布:淘宝巴克110 编辑:程序博客网 时间:2024/06/09 14:13
VB6做一个自动登录路由器
(2009-09-04 14:52:37)杂谈
本来以为telnet很简单,客户端把登录帐号和命令发过去,对端返回结果就行了。其实在telnet过程中,双方还会互相发送一些命令,这些命令有些大概的作用是通知、协商或者控制。
一、TELNET协议简介
1、参考
telnet的命令格式大概是这样,分3个或4个字段,每个字段一个字节。
前导 命令 选项 [子选项]
下面是详细资料:
(1)前导
255:IAC,表示其后的数据为命令和选项
(2)命令
236:EOF 文件结束符
237:SUSP 挂起当前进程(作业控制)
238:ABORT 异常中止进程
239:EOR 记录结束符
240:SE 子选项结束
241:NOP 无操作
242:DM (Data Mark) 数据标记
243:BRK (Break)中断
244:IP (InterruptProcess)中断进程
245:AO (Abort Output)异常中止输出
246:AYT (Are YouThere)对方是否还在运行
247:EC (Erase Character)
248:EL (Erase Line)删除行
249:GA (Go Ahead)继续进行
250:SB 子选项开始
251:WILL 指示希望开始执行,或者确认现在正在操作指示的选项
252:WONT 指出拒绝执行或继续招待所指示的选项
253:DO 指出要求对方执行,或者确认希望对方执行指示的选项
254:DONT 指出要求对方停止执行,或者确诊要求对方停止执行指示的选项
(3)选项
> 1:ECHO 回显
3:SGA 抑制继续进行
5:STATUS 状态
6:TIMING 定时标记
24:TERMTYPE 终端类型
31:NAWS (NegotiateAboutWindowSize)协商窗口的尺寸
32:TERMSPEED 终端速率
33:TFLOWCNTRL 远程流量控制
36:ENVIRON 环境变量
37:AUTHENTICATION
2、协商
在telnet会话发起的时候,双方会有一些协商工作,251(WILL)、252(WONT)、253(DO)、254(DONT)这4个命令就是用来协商的。远端会主动发送一些协商信息,有些设备只是向客户端发送一些通知信息,而有些设备非要客户端进行协商确认以后才能进行下一步的登录工作。
下面是一些厂家设备发送过来的协商命令实例,及需要客户端需要进行的确认工作(为便于查看,所有的字段全都用花括号扩了起来):
AIX: {Iac}{Dont}{37}{Iac}{Do}{24}
需要回一个{Iac}{Wont}{24},才能继续下一步的登录过程
RiverStone: {Iac}{Will}{3}{Iac}{Do}{1}{Iac}{Do}{31}{Iac}{Will}{5}{Iac}{Do}{33}
需要回一个{Iac}{Wont}{31},才能继续下一步的登录过程
Cisco: {Iac}{Will}{1}{Iac}{Will}{3}{Iac}{Do}{24}{Iac}{Do}{31}
不需要回复,直接进入登录过程
Huawei: {Iac}{Will}{1}{Iac}{Will}{3}{Iac}{Do}{24}
不需要回复,直接进入登录过程
ZTE: {Iac}{Will}{1}{Iac}{Do}{31}{Iac}{Do}{24}{Iac}{Do}{32}{Iac}{Will}{3}
不需要回复,直接进入登录过程
二、利用Winsock控件访问网络
1、Winsock状态
(0) ="sckClosed" ' 缺省的,关闭
(1) ="sckOpen" ' 打开
(2) ="sckListening" ' 侦听
(3) = "sckConnectionPending" ' 连接挂起
(4) ="sckResolvingHost" ' 识别主机
(5) ="sckHostResolved" ' 已识别主机
(6) ="sckConnecting" ' 正在连接
(7) ="sckConnected" ' 已连接
(8) ="sckClosing" ' 同级人员正在关闭连接
(9) ="sckError" ' 错误
2、连接远端服务器
Winsock1.RemoteHost ="xxx.xxx.xxx.xxx"
Winsock1.RemotePort = 23
Winsock1.Connect
连接成功后,会触发Winsock1_Connect事件,同时State成为sckConnected
如果连接超时,会触发错误号为10060的Winsock1_Error事件
3、和远端服务器断开
本地主动断开
Winsock1.Close
Do
Loop Until Winsock1.State = 0
本地主动断开连接不会主动触发Winsock1_Close事件,可以根据State=sckClosed判断是否成功断开。
远端主动断开
远端主动断开连接触发Winsock1_Close事件,同时state成为sckClosing,需要执行Winsock1.Close来完成断开操作。
如果长时间没有数据交换,会产生超时错误,会触发错误号为10053的Winsock1_Error事件
4、接收数据
PrivateSub Winsock1_DataArrival(ByValbytesTotal As Long)
Dim CH() As Byte
Dim i As Long
If (bytesTotal > 0) Then
Winsock1.GetData CH, vbByte +vbArray, bytesTotal
For i = 0 To bytesTotal - 1
........
Next
End If
End Sub
客户端收到数据后会触发Winsock1_DataArrival事件,将所有数据读入byte数组后进行处理。
5、发送数据
Winsock1.SendData string
Winsock1.SendData byte
SendData方法可以发送多种类型的数据,需要注意的是对于32-127之间的字符可以利用字符串的方式发送,但是对于telnet的命令,通过chr$(255)& chr$(252) &chr$(24)这种拼接成字符串再发送的方式是不行的,必须把这些字符一个一个发送出去,网上有个MyTelnet的VB实例程序,对各种telnet命令都有比较完整的响应,但是是用拼接字符串的方式实现的,所以程序一直不能运行。我还没有试验是否可以利用bytearray的方式发送。
- VB6做一个自动登录路由器
- 如何自动登录路由器
- 宽带路由器自动登录怎么实现
- [Raspbian]RaspberryPi做自动pppoe拨号路由器
- Linux做一个功能完备的路由器
- 用 CentOS 做一个 BGP 路由器
- Linux做一个功能完备的路由器
- vb6.0做一个半透明窗体(全透)
- extJS做的一个登录
- 做一个简单登录界面
- 如何使用python自动登录路由器且获取页面内容
- 做自动登录脚本的必备--firebug
- Archlinux实现自动登录、自动进入图形界面和自动连接路由器wifi
- VB6 自动编译组件
- VB6 自动创建 ODBC
- 做一个可以支持万台以上电脑的路由器
- jsp中用cookie做的一个关于密码下次登录的时候能够自动显示小例子
- 一个用ext做的登录页面
- C语言链表
- 四道经典C语言指针试题
- vim自动缩进设置
- Android中资源文件夹res/raw和assets的使用
- SQL Server 2008中的新日期数据类型-Mssql数据库教程
- VB6做一个自动登录路由器
- c 语言 链表
- 【转】Android开发之游戏中的常用技巧
- .NET开发不可错过的25款必备工具
- 利用配置文件使用一些可配置的资源
- 宽带路由器自动登录怎么实现
- Linux 2.6驱动开发--字符设备驱动实例
- 使用递归函数,查询数据表将子类ID(包括孙类ID,重孙类ID...)保存为数组
- 这个夏天,香水“穿”出你的S曲线