TELNET客户端的问题

meikeer 2007-06-22 04:57:07
先看源程序
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdTelnet1Connected(TObject *Sender)
{
Memo1->Lines->Add("Connected");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdTelnet1->Terminal="vt100";
IdTelnet1->Connect();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdTelnet1DataAvailable(TIdTelnet *Sender,
const AnsiString Buffer)
{
int Start, Stop;

if(Memo1->Lines->Count == 0)
Memo1->Lines->Add("");

Start = 1;
Stop = Buffer.Pos(IntToStr('\n')); //the character count to a CR in the buffer

if(Stop == 0)
Stop = Buffer.Length() + 1;

while(Start <= Buffer.Length()){
Memo1->Lines->Strings[Memo1->Lines->Count -1] =
Memo1->Lines->Strings[Memo1->Lines->Count -1] +
Buffer.SubString(Start,Stop-Start);

if(Buffer.SubString(Stop,1)=='\n')
{
Memo1->Lines->Add("");
SendMessage(Memo1->Handle,WM_KEYDOWN, VK_UP,1);
}
Start = Stop + 1;
if(Start > Buffer.Length()){
break;
}
if(Buffer.SubString(Start,1)=='\n'){
Start++;
}
Stop = Start;
while((Buffer.SubString(Stop, 1)!= '\n')&&(Stop <= Buffer.Length())){
Stop++;
}
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
IdTelnet1->Disconnect();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key ==Char(13)){
if(IdTelnet1->Connected()){
for(int i=1;i<=Edit1->Text.Length();i++)
IdTelnet1->SendCh(Edit1->Text[i]);
IdTelnet1->SendCh(Char(13));
}
Edit1->Text="";
}
}
//---------------------------------------------------------------------------
这是在网上找到的,我模拟了一下,连接linux时没有问题,但是连接我的modem(大亚科技)时,输入完密码显示不了接收到的内容,为何?
...全文
252 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
meikeer 2007-06-27
  • 打赏
  • 举报
回复
结贴了,可是不知道为什么没给你加上分
meikeer 2007-06-27
  • 打赏
  • 举报
回复
非常感谢,可以加你的QQ吗?我的 17548773
LuoGD 2007-06-27
  • 打赏
  • 举报
回复
甚至提示信息是“welcome to HCONEXANT SYSTEMS”,如果你的Socket只接收到“welcome to”而没有收到“HCONEXANT SYSTEMS”,都可能导致通信失败
LuoGD 2007-06-27
  • 打赏
  • 举报
回复
我的意思是,你的程序需要模拟在WINDOWS CMD的交互过程:
比如:
连接21端口后->接收欢迎信息,和输入用户名提示->发送用户名->接收密码提示信息->发送密码
......

这样的一个交互的顺序是不能错的,比如你“接收欢迎信息,和输入用户名提示”后你发送完用户名后就发送密码就会导致失败!
meikeer 2007-06-22
  • 打赏
  • 举报
回复
to:shadowstar
IdTelnet1->SendCh(Char(10)); 加上没有任何作用

to:LuoGD

用WINDOWS CMD下的telnet工具测试正常,用超级终端也正常,我访问时得到的数据只有


我访问时得到的数据如下

[0m[2J[01;28HCONEXANT SYSTEMS, INC.[02;19H ACCESS RUNNER ADSL CONSOLE PORT[24;01H>>>[24;01HLOGON PASSWORD>[02;53H3.21[24;17H[24;17H[23;1H[0K[23;1H[0K0;25H3. Connection Status[11;25H4. Network Setup[12;25H5. ADSL Setup[13;25H6. System Maintenance[14;25H7. Misc Setup[15;25H8. Advanced Setup[18;25HS. Save Settings and Reset Unit[19;25HR. Reset Without Saving Changes[22;25HEnter your selection below:[02;53H3.21[24;04H[24;04H

登录后前两条没有显示出来
LuoGD 2007-06-22
  • 打赏
  • 举报
回复
不同类型的TELNET服务器的交互是有细微的区别的,
楼主先用WINDOWS CMD下的telnet工具测试一下modem(大亚科技)的情况
shadowstar 2007-06-22
  • 打赏
  • 举报
回复
IdTelnet1->SendCh(Char(13));
IdTelnet1->SendCh(Char(10)); // 加一句

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧