Infelizmente não ajudaram... O primeiro link nem usa o método .Read do SocketStream... Dificil isso cara, não faz sentido, porque eu tenho 100% de certeza que recebo a resposta do socket, mas por algum motivo não consigo ler... Deixa eu te explicar uma coisa... O primeiro texto que recebo logo quando conecto, é uma mensagem de boas vindas. Então assim que conecto eu faço o seguinte, jogo na minha procedure ReceiveText... Como segue abaixo o code: MySocket.Active:= true;
if (MySocket.Socket.Connected = true) then
ReceiveText(MySocket)
Aí logo no inicio dessa procedure ReceiveText tem:
procedure MyThread.ReceiveText(MySocket: TClientSocket);
var
ReceivedString: string;
SockStream: TWinSocketStream;
Buffer: array[0..1023] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), #0);
SockStream := TWinSocketStream.Create(MySocket.Socket, 2000);
while (SockStream.Read(Buffer, SizeOf(Buffer)) <> 0) do
ReceivedString:= ReceivedString + Buffer;
if (BannerCtrl = 0) and (AnsiStartsStr('+', ReceivedString)) then
begin
inc(BannerCtrl);
Form1.Memo1.Lines.Add(ReceivedString);
end;
if (BannerCtrl > 0) and (UserAuthCtrl = 0) then
begin
SockStream.Free;
SendText('UserAuth',MySocket);
end;
Eu recebo a mensagem de boas vindas com sucesso, adiciono ela num MEMO e logo depois de adicionar chamo a procedure SendText que tá assim:
procedure MyThread.SendText(Command: string; MySocket: TClientSocket);
begin
if Command='UserAuth' then
begin
MySocket.Socket.SendText('USER test'+#13+#10);
inc(UserAuthCtrl);
ReceiveText(MySocket);
end;
end; Bom, ou seja, eu envio o USER test, incremento uma var pra controle apenas e chamo novamente a ReceiveText, o MySocket ali é o ClientSocket que to passando como parametro pra elas funcionarem corretamente... Aí lá na ReceiveText, o inicio é justamente aquela parte pra ler algum texto do socket... Eu já li a mensagem de boas vindas com sucesso, já add no memo, já sai da procedure, enviei o 'USER test', recebi a resposta tipo: OK password please... Era pra eu conseguir pegar essa resposta agora concorda? OK password please... Mas não pega, já tentei mudar isso aqui de todos os jeitos possíveis! Não vai. Eu to pensando se é prq na verdade, eu não chego a sair da procedure ReceiveText e já chamo a procedure SendText... Depois chamo novamente a ReceiveText... Será que é isso que tá causando o problema?