Ir para conteúdo
Fórum Script Brasil

HwTrap

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Tudo que HwTrap postou

  1. Jhonas, o que você falou estava certo, eu não estava dando o tempo necessário para o socket receber o texto. Então no meio do código puis o método Waitfordata do TWinSocketStream. E aí funcionou... Mas, estranho porque eu na verdade, estava listening numa porta local, e redirecionando pra uma conexão remota, então eu via os pacotes, e as respostas do socket chegavam bem antes e o programa não conseguia pegar. Se não for pedir demais, tem como você me explicar o por que disso? A resposta já tinha aparecido no meu redirecionador de conexão mas o socket não conseguia puxá-la?
  2. 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?
  3. Sim... Se eu já envio o PASS eu consigo ver a resposta... se você ver este tópico vai entender o que estou falando...
  4. Pessoal, eu envio um texto para o servidor via ClientSocket... E o servidor me responde. Eu quero pegar essa resposta, mas não consigo ter sucesso... O código tá assim: procedure MyThread.SendText(Command: string; 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); if Command='Username' then begin MySocket.Socket.SendText('USER test'+#13+#10); //quando eu envio isso, recebo uma resposta tipo: '+OK Password required' while SockStream.Read(Buffer, SizeOf(Buffer)) <> 0 do ​//isso devia ler a resposta e por dentro da ReceivedString... Mas não acontece nada. ReceivedString:= ReceivedString + Buffer; Alguém sabe me dizer o porque? Eu tenho certeza que o timeout de 2s dá e sobra tempo pra receber a resposta... E tenho ctz que o socket está me enviando essa resposta... o que fazer??
×
×
  • Criar Novo...