Tserversocket não recebe a mensagem.
na minha aplicação, coloquei um componente TserverSocket, e no evento ClientWrite coloquei o seguinte código:[...]
Já faz algum tempo que não uso TServerSocket/TClientSocket, mas se não me engano o certo seria o seu servidor ler os dados no evento [b:38033105f5]TServerSocket.OnClientRead[/b:38033105f5].procedure TFRM_Principal.ServersockClientWrite(Sender: TObject; Socket: TCustomWinSocket); var mmsg,IP:string; begin mmsg:=Socket.ReceiveText; Ip:=Socket.remoteAddress; end;
Quanto ao IP, ele estará certo enquanto existir a conexão.
Massuda
Curtidas 0
Respostas
Massuda
10/12/2004
[...] uso o seguinte código para enviar a mensagem:
Acho que o problema aqui é cliente.Close logo após o cliente.SendText... como seu cliente deve ser do tipo ctNonBlocking, SendText retorna após bufferizar o texto para envio; quando o Close é executado, não há garantia de que o texto tenha sido enviado. Experimente por um Application.ProcessMessages antes do cliente.Close.try st:=TStringStream.Create(´[´+Pestacao+´](´+Pnomeuser+´)´+edtmsg.Text); cliente.Close; cliente.Address:=Pip; cliente.Open; cliente.Socket.SendText(´[´+Pestacao+´](´+Pnomeuser+´)´+edtmsg.Text); cliente.Close; except on E:Exception do Begin ShowMessage(e.Message); End; end;
Quanto ao IP do cliente que você obtem no servidor, ele está disponível a partir do instante que a conexão é estabelecida, independente de ter transmitido/recebido dados do cliente. O IP do cliente pode ser obtido a partir do instante que o servidor gera o evento TServerSocket.OnAccept.
Finalmente, duas sugestões...[list:741f871482][*:741f871482]Dê uma olhada no exemplo que está no subdiretório Demos\Internet\Chat que existe no diretório do Delphi, que implementa um chat usando TServerSocket e TClientSocket[*:741f871482]Para programar comunicação de dados num estilo sequencial (abre, lê/escreve, fecha) é mais fácil se você optar por usar o Indy.[/list:u:741f871482]
GOSTEI 0