| 发表于:2007-05-27 00:31:40 楼主 |
我现在有个项目急需用vb做一个自动telnet到主机的程序。 我在网上下载了vb for telnet的源代码程序。但这个程序不能登录所有的telnet主机。 只要telnet主机返回的消息要求网络协商,客户端就不再接收数据,甚至连提示输入登录名的信息都没有返回,只返回几个“???”的字符。 我测试时用windows xp自带的telnet服务器连接,登录不了。实际环境需要登录aix unix telnet主机,也登录不了。 我测试时的代码是:http://www.99d.com.cn/download/vbnet/telnet.zip 客户端接收到以下信息: "welcome to microsoft telnet service " 然后就执行winsock.close了。 这个问题在:楼主yochang()2006-11-30 12:39:44 在 vb / 网络编程 提问 问题:即http://topic.csdn.net/t/20061130/12/5196635.html#top 提到过。 yochang()说找到了方法。但按照他的方法还是不行。 '***************************************************************************** ' 为解决hlr41、42的问题,增加的代码 '***************************************************************************** function inkey() as byte dim b as byte '循环等待服务器端的数据 while winsock1.bytesreceived = 0 nop wend '获得服务器端数据,每次获得一个字节 winsock1.getdata b '返回获得的字节 inkey = b end function '控操作过程,以等待服务器端的数据 sub nop() doevents: doevents: doevents: doevents: doevents: doevents: doevents: doevents: doevents end sub function vvv(d$) '将字符串转换成数值 vvv = val(d$) '然后去除被转换成数值的字符串 d$ = mid$(d$, instr(d$ + "; ", "; ") + 1) end function sub sendchars(d$) dim b as byte while d$ <> " " b = vvv(d$) '然后发送该字节 winsock1.senddata b wend end sub sub ttt() dim b as byte, ll dim c, d, v, xx, yy as byte dim x, y, l, f, t as integer dim s$, dat$, p& while winsock1.bytesreceived > 0 'doevents b = inkey '分析得到的字节数据 select case b case 255 '255表示的是命令的先导字符,即后面的数据是命令 '接着获得后面两个字节的数据,分别放在变量c和d中 c = inkey d = inkey '如果c为253,表示发出do命令,服务器提出要求协商 if c = 253 then 'and (d = 1 or d = 24) sendchars "255;251; " & d goto l2 end if '如果c为254,表示拒绝接收 if c = 254 and d = 1 then sendchars "255;252;1 " goto l2 end if '如果为251 ,表示愿意激活某个选项 if c = 251 and d = 1 then sendchars "255;254;1 " goto l2 end if '如果是250,表示的是子协商选项 if c = 250 then '循环等到d等于240,表示子协商结束 while d <> 240 d = inkey wend sendchars "255;250;24;0;118;116;49;48;48;255;240 " goto l2 end if '如果是253,发出do命令 if c = 253 then sendchars "255;252; " & d goto l2 end if end select l2: wend 'connectdd = true end sub ttt的进程是不是放在winsockclient_dataarrival中? 为什么我跟踪的时候,返回到: "welcome to microsoft telnet service "时,winsock自动close了?? 用cmd的telnet登录是正常的。 请大侠们指点指点,感激不尽! |
|
|
|
|