谁用过TIdTelnet 控件,有点小问题

weixing979 2007-06-27 11:43:00
用 TIdTelnet 连接到服务器,用SendCmd发送命令,有的命令发送成功,能得到返回值.有的命令发下去,服务器很长时间也不返回结果,偶尔也会返回一次,看看是怎么回事.

发送成功的命令有
LI
TI
INITTEST
SFM 1
CAC 7,"E"


发送不成功的命令
BspSetULVGA 0x3f3f3f3f
BspSetDLVGA 0x3f3f3f3f
等,而且我把数值换成10进制的值,也没有成功.会不会是0x引起的问题.
另外,这几个命令在telnet窗口里手工输入都是正常的
...全文
373 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2007-06-27
  • 打赏
  • 举报
回复
不要用SendCmd,用SendCh

TIdTelnet一直在后台查询有没有收到数据用于引发OnDataAvailable事件. 用SendCmd它要接收返回的数据,很可能是它想收的数据被TIdTelnet抢先得到了.
meikeer 2007-06-27
  • 打赏
  • 举报
回复
我整明白我的问题了
m_IdTelnet1->SendCh(ss[i]);
后面加上Sleep(1000) 就行了,我想你遇到的问题会和我一样
Waiting4you 2007-06-27
  • 打赏
  • 举报
回复
最后那句应该是m_IdTelnet1->SendCh(13);发送回车符

象你这个情况也可以直接用WriteLn(ss);只要注意所有收到的数据都应该在OnDataAvailable里接收就行了

weixing979 2007-06-27
  • 打赏
  • 举报
回复
放弃TIdTelnet 了,改用ClientSocket了
weixing979 2007-06-27
  • 打赏
  • 举报
回复
SendCh 怎么写,
AnsiString ss = "BspSetULVGA 0x3f3f3f3f";
for(int i=1;i<= ss.Length();i++)
m_IdTelnet1->SendCh(ss[i]);
m_IdTelnet1->SendCh('#13');

是这样写吗,刚才这样写,好象返回结果就是发送的字符串,感觉不太对.

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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