我在QT C ++(带有侦听套接字的服务器)中开发了一个应用程序,等待客户端连接和发送命令。
它是在Windows XP Professional版本2002 SP3英文版中开发和测试的,并在Windows 7 64位中使用telnet客户端使用保留字SEND从命令提示符向服务器发送字符串而没有问题。
实际上我正在从另一台Windows XP专业版2002 SP3西班牙语版本的机器上测试这个应用程序,我遇到了发送字符串的问题。
Telnet客户端正确连接,从服务器接收数据,但是当我移动到命令提示符并尝试发送我收到的字符串并出错时。
Microsoft Telnet>发送MYSTRING
命令无效。输入?/求助帮助
Microsoft Telnet> ?
命令可以缩写。支持的命令是:
c - 关闭当前连接
d - 显示显示操作参数
o - 打开主机名[port]连接到主机名(默认端口23)。
q - 退出退出telnet
set - set set options(为列表键入'set?')
sen - 将发送字符串发送到服务器
st - 状态打印状态信息
u - 取消设置未设置的选项(为列表键入'unset?')
?/ h - 帮助打印帮助信息
Microsoft Telnet> d
逃脱角色是'CTRL +}'
将是auth(NTLM身份验证)
本地回声关闭
新行模式 - 使返回键发送CR& LF
当前模式:控制台
将是术语类型
首选术语类型是ANSI
注意:上面的转录被翻译,我收到西班牙语的这条消息
我需要知道这个问题,telnet没有识别保留字是配置还是安全问题。
Windows防火墙已停用。
EDIT1:
清除Telnet客户端问题的情况:
我在Windows XP 2002 SP3英文版中开发了一个应用程序。此应用程序是在端口6000中侦听的网络中的服务器。等待客户端通过LAN连接(例如通过Telnet客户端)。
运行我的应用的电脑有IP1及其工作。
从具有相同操作系统的PC2开始,我使用> telnet IP1 6000连接,然后连接并从我的应用程序(服务器)接收数据。然后我按下&#c; ctrl +}'并获得Telnet提示Microsoft Telnet>发送AnyString AnyString已发送到服务器。我的应用程序正确接收数据,处理它并正常工作。
从PC3使用W7和Ubuntu虚拟机,程序与PC2相同,并且工作正常。
从PC4 os Windows XP SP3 2002西班牙语i使用> telnet IP1 6000连接并在我连接并从我的应用程序(服务器)接收数据后。然后我按下&#c; ctrl +}'并获得Telnet提示Microsoft Telnet>发送AnyString无效的命令。输入?/求助帮助
这就是为什么我认为XP上的Telnet客户端可以配置?"
答案 0 :(得分:1)
要使用telnet客户端通过TCP / IP发送文本消息,您只需要使用地址调用telnet(如果不是默认值23,则使用端口),即:
> telnet 192.168.1.1 13 // tell me your time
> string to be sent // type windows's enter
> // should be sent as a text to 192.168.1.1 on port 13
当我移动到命令提示符并尝试发送我收到的字符串时 错误。
Microsoft Telnet> 发送 MYSTRING
命令无效。输入?/求助帮助
该命令名为 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个字符p i o t r
时,它会以00字节(&#39; \ 0&#39;)终止这5个字节,因此发送了6个字节:< / p>
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);
}