在工作中,遇到了要用telnet 做成一个com供.net调用,做起来比较方便,但遇到一个问题,就是它是一个异步接受模式,但再com中不起作用了
看了一下indy telnet控件的代码,Connect 用了一个FTelnetThread := TIdTelnetReadThread.Create(SELF);
开启的线程接受的,可能由于这个线程再com中不能创建的原因,接受不到数据
我就 多添加了一个
function TIdTelnet.ReadBuffer: string;
begin
result := Negotiate(CurrentReadBuffer);
end;
这个函数
在主函数中就不使用 DoOnDataAvailable 这个异步接受模式了
直接用IdTelnet1.ReadBuffer ,就可以成功了
但要注意的是 ,要用一个 IdTelnet1.ReadTimeout := 500;
最好用一个
try
AllTime := 0;
while AllTime < 600 do
begin
RecieveString.Text := RecieveString.text + IdTelnet1.ReadBuffer;
Inc(AllTime);
Sleep(100);
end;
except
end;
才可以得到最近收到的内容,希望对大家有用