我有以下情況:TCP發送命令並等待輸出
function Mach3Code(Str: String): String;
var StrOut: String;
begin
StrOut := '';
try
IdTelnet1.Connect();
IdTelnet1.Write(Str);
StrOut := ''; // assign here return output;
finally
IdTelnet1.Disconnect;
end;
Result := StrOut;
end;
就行了「斯特勞特:=‘’;」我需要獲得服務器的文本輸出(這是一個tcp服務器,由我作爲Mach3插件在vc 2008中編寫)。
通常,客戶端發送「COMMAND1」,服務器回覆「ANSWER1#」或類似的東西。我需要的代碼等待答案,然後返回它,同步,因此我可以這樣做:
StrResult := Mach3Code('G0X300Y200');
和讀什麼服務器部分已經送給我的。
任何想法我可以如何解決這個問題?
我不知道Delphi和它的對象,但有一個'Write'方法的對象理應有一個'Read'方法。 –
與您的問題無關,但您是否必須每次連接/斷開連接?如果你經常調用這個函數,將會產生很多開銷。 –
@JoachimPileborg:是的,它確實有讀取方法,但並不像預期的那樣工作。它只是掛起。連接/斷開連接不是問題,它很少被調用。 StrOut:= IdTelnet1.ReadLn('#') 這一個等待永遠...... – kkazakov