Foxtable(狐表)用户栏目专家坐堂 → [求助]telnet 求助!


  共有2287人关注过本帖树形打印复制链接

主题:[求助]telnet 求助!

帅哥哟,离线,有人找我吗?
yangguojun
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
[求助]telnet 求助!  发帖心情 Post By:2017/8/10 10:01:00 [只看该作者]

Dim P As New Process
        P.StartInfo.FileName = "cmd.exe"
        '这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
        P.StartInfo.UseShellExecute = False
        P.StartInfo.RedirectStandardInput = True
        P.StartInfo.RedirectStandardOutput = True
        P.StartInfo.CreateNoWindow = True
        P.Start()
        P.StandardInput.WriteLine("ping 127.0.0.1") ' 向cmd.exe输入command
        P.StandardInput.WriteLine("exit")
        P.WaitForExit(60000)
        Dim S As String = P.StandardOutput.ReadToEnd() ' 得到cmd.exe的输出
        P.Close()
        output.show(S.Replace(Chr(13), ""))

不知道为什么没有数据, 请老师帮忙改改



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 10:14:00 [只看该作者]

Dim P As New Process
P.StartInfo.FileName = "cmd.exe"
P.StartInfo.UseShellExecute = False
P.StartInfo.RedirectStandardInput = True
P.StartInfo.RedirectStandardOutput = True
P.StartInfo.CreateNoWindow = True
P.Start()
P.StandardInput.WriteLine("ping 127.0.0.1") ' 向cmd.exe输入command
P.StandardInput.WriteLine("exit")
'P.WaitForExit(600)
Dim S As String = P.StandardOutput.ReadToEnd() ' 得到cmd.exe的输出
output.show(S.Replace(Chr(13), ""))

 回到顶部
帅哥哟,离线,有人找我吗?
yangguojun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
  发帖心情 Post By:2017/8/10 10:33:00 [只看该作者]

老师上面的代码可以了,再帮看看下面这段,我在cmd里  测试我的每条代码都没有问题,但是在telnet里  逐条输入得不到结果。


login:cs

password:cs

welcome to cmd

order list:INPUT OUTPUT SENSOR SWITCH REBOOT QUIT

input order:INPUT 0

I1:0.00A        (0.00A ~ 32.00A/35.00A)
U1:219.9V       (0.0V ~ 250.0V/280.0V)
P1:0W
PF1:1.000
E1:0.00kWh

I2:0.00A        (0.00A ~ 32.00A/35.00A)
U2:219.8V       (0.0V ~ 250.0V/280.0V)
P2:0W
PF2:1.000
E2:2.50kWh

I3:0.00A        (0.00A ~ 32.00A/35.00A)
U3:219.9V       (0.0V ~ 250.0V/280.0V)
P3:0W
PF3:1.000
E3:0.49kWh

input order:eXIT

input order:

上面的内容是 cmd里测试的记录,下面是我的代码

Dim iProcess As New Process()
iProcess.StartInfo.FileName = "cmd.exe"
iProcess.StartInfo.UseShellExecute = False
iProcess.StartInfo.RedirectStandardInput = True
iProcess.StartInfo.RedirectStandardOutput = True
iProcess.StartInfo.RedirectStandardError = True
iProcess.StartInfo.CreateNoWindow = False
iProcess.Start()
iProcess.StandardInput.WriteLine("telnet")
iProcess.StandardInput.WriteLine("o 192.168.1.190")
iProcess.StandardInput.WriteLine("cs")
'iProcess.StandardInput.WriteLine("")
iProcess.StandardInput.WriteLine("cs")
iProcess.StandardInput.WriteLine("input 0")
iProcess.StandardInput.WriteLine("TJ00qw.job")
'这里是一个ping命令带ip地址参数的,你可以改成telnet命令还有添加参数
iProcess.StandardInput.WriteLine("exit")
'Label6.Text = iProcess.StandardOutput.ReadToEnd()
output.show(iProcess.StandardOutput.ReadToEnd())



 回到顶部
帅哥哟,离线,有人找我吗?
yangguojun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
  发帖心情 Post By:2017/8/10 10:45:00 [只看该作者]

Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

E:\销售管理(远程)>telnet

E:\销售管理(远程)>o 192.168.1.190

E:\销售管理(远程)>cs

E:\销售管理(远程)>
E:\销售管理(远程)>cs

E:\销售管理(远程)>input 0

E:\销售管理(远程)>exit

我的代码返回的是上面内容,  没有返回数据

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 10:52:00 [只看该作者]

telnet不是这样用的,参考这个做法

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=84487&replyID=585659&skin=1

 


 回到顶部
帅哥哟,离线,有人找我吗?
yangguojun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
  发帖心情 Post By:2017/8/10 11:31:00 [只看该作者]

图片点击可在新窗口打开查看这个例子更加看不懂了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 12:12:00 [只看该作者]

参考

 

Dim data, szData

Dim SmtpServ As New System.Net.Sockets.TcpClient("127.0.0.1", 80)
Dim NetStrm = SmtpServ.GetStream()
Dim RDStrm As New io.StreamReader(SmtpServ.GetStream())
Data = "111222333 " & vbcrlf
szData = System.Text.Encoding.ASCII.GetBytes(Data)
NetStrm.Write(szData, 0, szData.Length)
NetStrm.Flush()
output.show(data)

Data = "aaabbbccc " & vbCRLF
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray())
NetStrm.Write(szData, 0, szData.Length)
netStrm.Flush
output.show(data)
system.threading.thread.sleep(100)

'查看交互内容
Dim buff(10000) As Byte
netstrm.read(buff,0, buff.length)
msgbox(System.Text.Encoding.ASCII.getString(buff))

' 关闭连接
NetStrm.Close()
RDStrm.Close()

 


 回到顶部
帅哥哟,离线,有人找我吗?
yangguojun
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
  发帖心情 Post By:2017/8/10 13:38:00 [只看该作者]

非常感谢! 

'查看交互内容
Dim buff(10000) As Byte
netstrm.read(buff,0, buff.length)
msgbox(System.Text.Encoding.ASCII.getString(buff))

在这段代码前面  能否 判断  收到的字节长度 是多少 

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 14:31:00 [只看该作者]

Dim buff(SmtpServ.ReceiveBufferSize) As Byte
netstrm.read(buff,0, buff.length)
msgbox(System.Text.Encoding.ASCII.getString(buff)


 回到顶部
帅哥哟,离线,有人找我吗?
yangguojun
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:102 积分:818 威望:0 精华:0 注册:2013/8/11 9:54:00
  发帖心情 Post By:2017/8/10 14:44:00 [只看该作者]

这个方法好像不对 

output.show(SmtpServ.ReceiveBufferSize)
Return 22

得到的数值是  65536   实际上返回的长度只有8

 回到顶部
总数 12 1 2 下一页