Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Telnet客户端控制台:发送无效命令-仅适用于西班牙语版本 我在QT+C++(带有侦听套接字的服务器)中开发了一个应用程序,等待客户端连接和发送命令。_C++_Qt_Sockets_Windows Xp_Telnet - Fatal编程技术网

Telnet客户端控制台:发送无效命令-仅适用于西班牙语版本 我在QT+C++(带有侦听套接字的服务器)中开发了一个应用程序,等待客户端连接和发送命令。

Telnet客户端控制台:发送无效命令-仅适用于西班牙语版本 我在QT+C++(带有侦听套接字的服务器)中开发了一个应用程序,等待客户端连接和发送命令。,c++,qt,sockets,windows-xp,telnet,C++,Qt,Sockets,Windows Xp,Telnet,它是在Windows XP Professional Version 2002 SP3英文版中开发和测试的,并在Windows 7 64位中测试,使用telnet客户端使用保留字SEND从命令提示符向服务器发送字符串,没有问题 实际上,我正在另一台Windows XP Professional Version 2002 SP3西班牙语版机器上测试这个应用程序,我在发送字符串时遇到了问题 Telnet客户端正确连接,从服务器接收数据,但当我移动到命令提示符并尝试发送字符串时,我收到了错误消息 Mi

它是在Windows XP Professional Version 2002 SP3英文版中开发和测试的,并在Windows 7 64位中测试,使用telnet客户端使用保留字SEND从命令提示符向服务器发送字符串,没有问题

实际上,我正在另一台Windows XP Professional Version 2002 SP3西班牙语版机器上测试这个应用程序,我在发送字符串时遇到了问题

Telnet客户端正确连接,从服务器接收数据,但当我移动到命令提示符并尝试发送字符串时,我收到了错误消息

Microsoft Telnet>发送MYSTRING

无效命令。键入?/help以获取帮助

Microsoft Telnet>

命令可以缩写。支持的命令包括:

c–闭合电流连接

d–显示操作参数

o–打开主机名[端口]连接到主机名(默认端口23)

q–退出telnet

设置–设置设置选项(键入列表的“设置”)

sen–向服务器发送字符串

st–状态打印状态信息

u–取消设置未设置选项(键入“取消设置”可查看列表)

?/h–帮助打印帮助信息

Microsoft Telnet>d

转义字符为“CTRL+}”

将进行身份验证(NTLM身份验证)

局部回波关闭

新行模式–使返回键发送CR和LF

当前模式:控制台

将使用术语类型

首选术语类型为ANSI

注:上面的抄本是翻译过来的,我收到的这封信是西班牙语的

我需要知道这个问题,telnet不识别保留字是配置问题还是安全问题

Windows防火墙已停用

编辑1:


要清除Telnet客户端出现问题的情况,请执行以下操作:

我在WindowsXP2002SP3英文版中开发了一个应用程序。此应用程序是网络中侦听端口6000的服务器。等待客户端通过lan连接(例如通过Telnet客户端)


运行我的应用程序的电脑具有IP1及其工作模式

从具有相同操作系统的PC2,我使用>telnet IP1 6000进行连接,然后从我的应用程序(服务器)连接并接收数据。然后我按下“ctrl+}”,进入Telnet提示符Microsoft Telnet>send AnyString AnyString已发送到服务器。我的应用程序正确接收数据,处理数据,工作正常

从使用W7和Ubuntu虚拟机的PC3开始,程序与PC2相同,并且工作正常

从PC4 os Windows XP SP3 2002西班牙语中,我使用>telnet IP1 6000进行连接,然后从我的应用程序(服务器)连接并接收数据。然后我按下“ctrl+}”,进入Telnet提示符Microsoft Telnet>send AnyString无效命令。键入?/help以获取帮助


这就是为什么我认为XP上的Telnet客户端可以“配置?”

要使用Telnet客户端通过TCP/IP发送文本消息,您只需使用地址调用Telnet(如果不是默认的,则应使用端口23),即:

当我移动到命令提示符并尝试发送字符串时,我会收到 错误

Microsoft Telnet>发送MYSTRING

无效命令。键入?/help以获取帮助

命令名为sen,而不是send。也许一个发送也是sen,但在帮助中只有sen被显示出来,所以最好坚持下去

您可以通过键入转义字符(可能是“^]”移动到telnet模式,然后键入
sen

> telnet 192.168.1.1 13
> ctrl+]
Microsoft Telnet> sen my string here
>                         // should be sent as a text to 192.168.1.1 on port 13
Microsoft telnet client sen命令以null终止字符串:当您键入5个字符时,它以00字节('\0')终止这5个字节,因此发送了6个字节:

p  i  o  t  r  .
70 69 6f 74 72 00
如果Microsoft Telnet出现问题,您始终可以安装putty或编写简单的Telnet客户端:

void
str_cli(FILE *fp, int sockfd) {
    char buf[MAXLINE];
    int n;

    for ( ;;) {
        if ((n = Read(fileno(fp), buf, MAXLINE)) < 0) {
            err_quit("str_cli:");
        }  
        Writen( sockfd, buf, n);
    }
}

int main( int argc, char** argv) {
    int         sockfd;
    struct sockaddr_in  servaddr;

    if (argc != 2)
        err_quit("usage: tcpcli <IPaddress>");

    sockfd = Socket(AF_INET, SOCK_STREAM, 0);
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons( SERV_PORT);
    Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

    Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

    str_cli( stdin, sockfd);        /* do it all */

    close( sockfd);

    exit(0);
}
void
str_cli(文件*fp,int-sockfd){
char buf[MAXLINE];
int n;
对于(;;){
如果((n=Read(fileno(fp)、buf、MAXLINE))<0){
错误退出(“str_cli:”);
}  
写入(sockfd,buf,n);
}
}
int main(int argc,字符**argv){
int-sockfd;
servaddr中的结构sockaddr_;
如果(argc!=2)
err_quit(“用法:tcpcli”);
sockfd=套接字(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(SERV_port);
Inet\u pton(AF\u Inet,argv[1],&servaddr.sin\u addr);
连接(sockfd,(SA*)和servaddr,sizeof(servaddr));
str_cli(stdin,sockfd);/*全做*/
关闭(sockfd);
出口(0);
}

要从cmd发送,您必须调用带有参数的.exe或telnet来发送文本:键入string,键入enter-然后发送,但在另一台电脑(send命令工作的地方)中,不必在cmd行中键入字符串。连接到服务器(我的应用程序)后,可以使用scape character ctrl+}移动到telnet命令模式,并在那里键入命令。SEND是一个保留的telnet命令,在这里无法识别……您提到的第二个选项是我制作的过程,并且工作正常。当我更换PC时,相同的操作系统不同的语言,来自telnet的sen命令无效。这是我的问题。应用程序正在运行,telnet客户端也在另一台电脑上运行。我想这是一个配置问题,你说的是正确的,它已经解决了。telnet客户端似乎有不同的版本/配置。当我键入>sen MYSTRING时,我从telnet控制台获得无效命令。它甚至没有被发送。@mezeq您说您键入了Microsoft Telnet>send MYSTRING,然后您得到了Error以解决Telnet客户端的问题(sen和send是等价物):我在Windows XP 2002 SP3英文版中开发了一个应用程序。此应用程序是网络中侦听端口6000的服务器。等待客户端通过lan连接(例如通过Telnet客户端)。运行我的应用程序的pc具有IP1及其工作模式。从具有相同操作系统的PC2,我使用>telnet IP1 6000进行连接,然后从ap连接并接收数据
void
str_cli(FILE *fp, int sockfd) {
    char buf[MAXLINE];
    int n;

    for ( ;;) {
        if ((n = Read(fileno(fp), buf, MAXLINE)) < 0) {
            err_quit("str_cli:");
        }  
        Writen( sockfd, buf, n);
    }
}

int main( int argc, char** argv) {
    int         sockfd;
    struct sockaddr_in  servaddr;

    if (argc != 2)
        err_quit("usage: tcpcli <IPaddress>");

    sockfd = Socket(AF_INET, SOCK_STREAM, 0);
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons( SERV_PORT);
    Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

    Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

    str_cli( stdin, sockfd);        /* do it all */

    close( sockfd);

    exit(0);
}