最近要做一个Telnet客户端程序,要实现的功能,就是,
Telnet到一个远端的Win2003服务器上面,执行一下Netstat命令,拿回结果。开发的环境是C#,Framework V1.1,Winxp Pro想通过下面的两种中的一种来实现,1。调用Telnet。exe命令来执行。
现在用了Process类,调用TelNet.exe,
Process p = new Process();
p.StartInfo.FileName = "telnet.exe";
//p.StartInfo.Arguments = "/c ping 10.6.168.1";
//p.StartInfo.Arguments = "/c telnet 10.6.168.1";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true; 可是,怎么都收不了telnet以后,应该送过来的登陆信息,换成其他命令,比如,ping等等,都可以拿到输出信息。2。利用TcpClient来实现,
现在出现的问题就是,服务器端,传来了这样的消息,"255 253 37 255 251 1 255 251 3 255 253 39 255 253 31 255 253 0 255 251 " 换成其他字符集的话,就是乱码。
这个时候,给服务器送出消息,不过多久,连接就因为超时端掉了。 应该怎么做呢?或者说,我给服务器发送了错误的信息?
我发送了自己的用户名和密码,都flush出去,就是没有结果。有人可以指点一下吗?
Telnet到一个远端的Win2003服务器上面,执行一下Netstat命令,拿回结果。开发的环境是C#,Framework V1.1,Winxp Pro想通过下面的两种中的一种来实现,1。调用Telnet。exe命令来执行。
现在用了Process类,调用TelNet.exe,
Process p = new Process();
p.StartInfo.FileName = "telnet.exe";
//p.StartInfo.Arguments = "/c ping 10.6.168.1";
//p.StartInfo.Arguments = "/c telnet 10.6.168.1";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true; 可是,怎么都收不了telnet以后,应该送过来的登陆信息,换成其他命令,比如,ping等等,都可以拿到输出信息。2。利用TcpClient来实现,
现在出现的问题就是,服务器端,传来了这样的消息,"255 253 37 255 251 1 255 251 3 255 253 39 255 253 31 255 253 0 255 251 " 换成其他字符集的话,就是乱码。
这个时候,给服务器送出消息,不过多久,连接就因为超时端掉了。 应该怎么做呢?或者说,我给服务器发送了错误的信息?
我发送了自己的用户名和密码,都flush出去,就是没有结果。有人可以指点一下吗?
解决方案 »
- wpf的控件如何加入一个自己的信号?该如何自定义事件?
- c# windowsform 发送邮件
- 等分圆算法
- 怎么将一个数字(例如2,1.387)格式化成带两位小数点的数字(例如2.00,1.39)?
- 请教个线程内委托增加控件的问题,疑难!送50分,如果解决再送分,非常急(可以看我的结贴率100%)
- 求购ASP.NET工作流
- 谁能帮我解释一下这里delegate的作用以及执行过程??最好具体一些!谢谢……
- 我有一个Xml文件(比较规则),有什么办法生成相应的类的定义?
- 关于DataSet使用的几个问题!!!!!!!!!!!!
- winform 滚动条拉不到底
- 读文件的问题,高手过来看看
- 有没有人用过XtraReport?
我觉得直接用 tcp/ip 编程会比间接用telnet方便
谢谢。
start telnet.exe -f C:\213.log
cscript //nologo tel.vbs然后利用VbScript文件tel.vbs自动登录:
set sh=WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
sh.SendKeys "open 192.168.213.213"
WScript.Sleep 1000
sh.SendKeys "{ENTER}"
WScript.Sleep 1000
sh.SendKeys "kjn{ENTER}"
WScript.Sleep 1000
sh.SendKeys "kjn2005{ENTER}"
WScript.Sleep 1000
sh.SendKeys "top -s 300 -U root{ENTER}"最后程序去处理这个LOG文件,就可以了。
这个例子是C++的。fangxinggood(JustACoder) 的提议的确是一个办法。谢谢。但是看到网上有人说,直接在Process里面调用Telnet.exe可以做到,但是我今天测试过,一样不可以,得不到输入,输出的信息。谁做到过吗?请给个提示。有没有使用TcpClient的例子呢?做一个Telnet的服务器,客户端,等于只是用了TCP协议。不一定用Telnet协议。希望大家都多发言。
用了TcpClient,
就是只能收到用户名或者密码不对的错误。#region 4 Send UserIDdata = new Byte[256];
data = System.Text.Encoding.Default.GetBytes("user\r"); // Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length);Console.WriteLine("Sent: {0}", "nexs");responseData = "";
data = new Byte[256];
bytes = stream.Read(data, 0, data.Length);
for (int i = 0; i < bytes; i++)
{
responseData += System.Convert.ToChar (data[i]).ToString ();
}//responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData); #endregion#region 5 Send PassWddata = new Byte[256];
data = System.Text.Encoding.Default.GetBytes("user\r"); // Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length);Console.WriteLine("Sent: {0}", "nexs");responseData = "";
data = new Byte[256];
bytes = stream.Read(data, 0, data.Length);
for (int i = 0; i < bytes; i++)
{
responseData += System.Convert.ToChar (data[i]).ToString ();
}//responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData); #endregion