c语言telnet函数 telnet语句

怎么用c语言调用telnet这个程序

windows系统缺省没有telnet的(这个要另外添加的)

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、外贸网站建设、衡水网络推广、小程序制作、衡水网络营销、衡水企业策划、衡水品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供衡水建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

所以你用system("telnet")是不行的

若你的系统已安装了telnet且在路径中,直接用

system("telnet")就可以了

C# winform点击按钮执行telnet登陆,并且执行命令,返回结果,求代码示例。

//我自己用的telnetHelper类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Sockets;

using System.Net;

using System.Threading;

namespace AFC_APP1

{

public class TelnetHelper2

{

string hostName;

string login;

string password;

int port = 23;

IPAddress ipAdd;

IPEndPoint ipEnd;

Socket mysocket;

/// summary

/// 默认构造函数

/// /summary

public TelnetHelper2()

}

/// summary

/// 构造函数

/// /summary

/// param name="hostName"/param

/// param name="login"/param

/// param name="password"/param

public TelnetHelper2(string hostName,string login,string password)

{

this.hostName = hostName;

this.login = login;

this.password = password;

ipAdd=IPAddress.Parse(hostName);

ipEnd = new IPEndPoint(ipAdd, port);

mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

}

/// summary

/// 连接

/// /summary

private void ConnetServer()

{

char[] sendfirst = new char[3];

sendfirst[0] = (char)(255);

sendfirst[1] = (char)(252);

sendfirst[2] = (char)(24);

byte[] sendfirstbytetemp = Encoding.Unicode.GetBytes(sendfirst);

byte[] sendfirstbyte = new byte[sendfirstbytetemp.Length / 2];

sendfirstbyte[0] = sendfirstbytetemp[0];

sendfirstbyte[1] = sendfirstbytetemp[2];

sendfirstbyte[2] = sendfirstbytetemp[4];

mysocket.Send(sendfirstbyte, 0, sendfirstbyte.Length, SocketFlags.None);

Thread.Sleep(300);

byte[] sendusernametemp = Encoding.ASCII.GetBytes(login);

byte[] sendusername = new byte[sendusernametemp.Length + 1];

char[] closechar = new char[2];

closechar[0] = (char)(10);

closechar[1] = (char)(13);

byte[] closebyte = Encoding.ASCII.GetBytes(closechar);

for (int i = 0; i  sendusernametemp.Length; i++)

{

sendusername[i] = sendusernametemp[i];

}

sendusername[sendusername.Length - 1] = closebyte[0];

mysocket.Send(sendusername, 0, sendusername.Length, SocketFlags.None);

Thread.Sleep(300);

byte[] senduserpasswdtemp = Encoding.ASCII.GetBytes(password);

byte[] senduserpasswd = new byte[senduserpasswdtemp.Length + 1];

char[] closechar2 = new char[2];

closechar2[0] = (char)(10);

closechar2[1] = (char)(13);

byte[] closebyte2 = Encoding.ASCII.GetBytes(closechar2);

for (int i = 0; i  senduserpasswdtemp.Length; i++)

{

senduserpasswd[i] = senduserpasswdtemp[i];

}

senduserpasswd[senduserpasswd.Length - 1] = closebyte2[0];

mysocket.Send(senduserpasswd, 0, senduserpasswd.Length, SocketFlags.None);

Thread.Sleep(500);

}

/// summary

/// 执行命令

/// /summary

/// param name="cmd"/param

private void ExcuteCommand(string cmd)

{

char[] sendfirst = new char[3];

sendfirst[0] = (char)(255);

sendfirst[1] = (char)(252);

sendfirst[2] = (char)(24);

byte[] sendfirstbytetemp = Encoding.Unicode.GetBytes(sendfirst);

byte[] sendfirstbyte = new byte[sendfirstbytetemp.Length / 2];

sendfirstbyte[0] = sendfirstbytetemp[0];

sendfirstbyte[1] = sendfirstbytetemp[2];

sendfirstbyte[2] = sendfirstbytetemp[4];

mysocket.Send(sendfirstbyte, 0, sendfirstbyte.Length, SocketFlags.None);

Thread.Sleep(300);

byte[] recvdatauser = new byte[4096];

mysocket.Receive(recvdatauser, 0, mysocket.Available, SocketFlags.None);

string recvuserstr = Encoding.ASCII.GetString(recvdatauser);

recvuserstr = recvuserstr.Substring(login.Length, recvuserstr.Length - login.Length);//去掉了服务器回显的用户名

recvuserstr = recvuserstr.TrimEnd('\0');

Console.Write(recvuserstr);

Thread.Sleep(300);

byte[] sendusernametemp = Encoding.ASCII.GetBytes(cmd);

byte[] sendusername = new byte[sendusernametemp.Length + 1];

char[] closechar = new char[2];

closechar[0] = (char)(10);

closechar[1] = (char)(13);

byte[] closebyte = Encoding.ASCII.GetBytes(closechar);

for (int i = 0; i  sendusernametemp.Length; i++)

{

sendusername[i] = sendusernametemp[i];

}

sendusername[sendusername.Length - 1] = closebyte[0];

mysocket.Send(sendusername, 0, sendusername.Length, SocketFlags.None);

Thread.Sleep(500);

}

/// summary

/// 获取数据

/// /summary

/// returns/returns

public string GetData(string cmd)

{

try

{

mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

mysocket.Connect(ipEnd);

ConnetServer(); //连接服务

ExcuteCommand(cmd);//执行命令

byte[] recvdatauser = new byte[8192];

mysocket.Receive(recvdatauser, 0, mysocket.Available, SocketFlags.None);

string recvuserstr = Encoding.ASCII.GetString(recvdatauser);

recvuserstr = recvuserstr.TrimEnd('\0');

mysocket.Close();

System.Threading.Thread.Sleep(300);

//Console.Write("recvuserstr_string:" + recvuserstr);

recvuserstr = recvuserstr.Substring(cmd.Length, recvuserstr.Length - cmd.Length).TrimStart();//去掉了服务器回显

recvuserstr = this.login.Equals("root") ? recvuserstr.Replace("#", "").TrimEnd() : recvuserstr.Replace("$", "").TrimEnd();

return recvuserstr;//.Split('\r')[1].Trim();

}

catch (Exception ex)

{

LogHelper.WriteTelnetLog(ex.ToString());

return "EXError:"+ex.ToString();

}

}

}

}

C语言获取telnet返回值写文件

telnet的输出不在本地管道,所以你没办法重定向到文件里面,或许你用.net库函数调用PowerShell能实现(只是想法,未尝试),不知道会不会偏离你的要求太远了。

c语言编程 telnet登录

你要自己写telnet工具的话那你牛.

你可以通过system()函数调用telnet工具.


网站名称:c语言telnet函数 telnet语句
本文路径:http://scyanting.com/article/hghsgd.html