Lendo e escrevendo com sockets!!!!!

Delphi

03/11/2004

Colegas..

Consegui fazer uma conexão via socket entre dois computadores.. mas preciso enviar uma string via esta conexão..

Código no ClientSocket :

No evento onclick de um botão qualquer

ClientSocket1.Active := True;
ClientSocket1.Socket.Write(ClientSocket1.Socket.SendText(string));

Código no Server Socket :

procedure TfrmIP_Client.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
s_ip_Internet := Socket.ReceiveText;
P_Procura_Arquivo_Ini;
end;

o q estou fazendo de errado..

já que o evento do server é disparado todas as vezes que clico no botão..

debuguei, mas não é passado nenhuma string..

o q fazer??


Cabelo

Cabelo

Curtidas 0

Respostas

Cabelo

Cabelo

03/11/2004

sobe..


GOSTEI 0
Castor Troy

Castor Troy

03/11/2004

Caro amigo eu tenho um chat que deve funcionar: É mais ou menos assim:

Possuo no form cliente um edit e um memo. Um componente ClientSocket com o adderess 127.0.0.1 e active true. No evento OnRead do ClientSocket eu tenho o seguinte:

[b:11c052479a]procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var mensagem: string;
begin
mensagem:=Socket.ReceiveText();
Memo1.Lines.Add(mensagem);
end;[/b:11c052479a]

No evento OnKeyPress do edit tenho o seguinte:

[b:11c052479a]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var mensagem: string;
begin
if Key = #13 then
begin
mensagem:=Edit2.Text+´ : ´+Edit1.Text;
ClientSocket1.Socket.SendText(mensagem);
Edit1.Clear;
end
end;[/b:11c052479a]
No servidor eu tenho um memo, um timer, um ServerSocket1 e uma label para contar quantos usuários estão conectados. No evento OnTimer eu tenho o seguinte

[b:11c052479a]procedure TForm1.Timer1Timer(Sender: TObject);
begin
qte_conexoes:=ServerSocket1.Socket.ActiveConnections;
Label2.Caption:=IntToStr(qte_conexoes);
end;[/b:11c052479a]
No evento OnClientRead eu tenho o seguinte:

[b:11c052479a]procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var mensagem: string;
geral: integer;
begin
mensagem:=Socket.ReceiveText();
Memo1.Lines.Add(mensagem);
for geral:=0 to qte_conexoes-1 do ServerSocket1.Socket.Connections[geral].SendText(mensagem);
end;[/b:11c052479a]

OBS: a variável
[b:11c052479a]qte_conexoes: integer;[/b:11c052479a]
é uma variável pública


GOSTEI 0
Cabelo

Cabelo

03/11/2004

Colega..

Tem um exemplo similar a este no delphi..

Tentei usá-lo mas não consegui..

Quando faço assim o evento onClientRead do ServerSocket não dispara..

já o evento onClientWrite dispara mas não consigo ler o socket.receivetext..

o q será?


GOSTEI 0
POSTAR