Pointer Record
Compoentes: IdTCPServer - IdTCPClient
Estou querendo enviar do cliente para o server um Pointer
Pointer:
Como faço para enviar o Pointer??
Criei ele
var
Teste: TTeste;
begin
New(Teste);
Teste.Nome:= ´dsdas´;
Teste.IP:= ´0.0.0.0´;
Comando do TCPClient para enviar para o TCPServer;
end;
Alguem pode me ajudar??
Estou querendo enviar do cliente para o server um Pointer
Pointer:
TTeste = ^PTeste; PTeste = record Nome: String; IP: String; ... end;
Como faço para enviar o Pointer??
Criei ele
var
Teste: TTeste;
begin
New(Teste);
Teste.Nome:= ´dsdas´;
Teste.IP:= ´0.0.0.0´;
Comando do TCPClient para enviar para o TCPServer;
end;
Alguem pode me ajudar??
Rudá
Curtidas 0
Respostas
Thomaz_prg
16/04/2006
Bom, não usei estes componentes, mas usando ServerSocket e ClientSocket, bastava usar SendBuf( Ponteiro ).
GOSTEI 0
Paullsoftware
16/04/2006
bem eu faço assim:
e para enviar faço
será que é isso que vc quer? :wink:
...
type
PClient = ^TClient;
TClient = record
IP : string[15]; { Ip da estação na rede }
Nome : String[40]; { Nome da Estação na rede }
Aberto
...e para enviar faço
procedure TfMain.EnviaMsg; var Msg : String; SelClient : PClient; begin ... begin try SelClient := PClient(Clients.LockList.Items[lbClients.ItemIndex]); TIdPeerThread(SelClient.Thread).Connection.WriteLn(Msg); finally Clients.UnlockList; end;
será que é isso que vc quer? :wink:
GOSTEI 0
Rudá
16/04/2006
Eu quero é enviar o ponteiro para o tcp cliente
Algo como write(ponteiro), usando o componente indy!
Algo como write(ponteiro), usando o componente indy!
GOSTEI 0
Paullsoftware
16/04/2006
não testei, mais pode ser que funcione
no TCPServerConnect(AThread: TIdPeerThread);
no TCPServerConnect(AThread: TIdPeerThread);
.. var Posicao : Pointer; NewClient : PClient; begin GetMem(NewClient, SizeOf(TClient)); ... NewClient.IP := AThread.Connection.Socket.Binding.PeerIP; NewClient.Nome := UpperCase(GStack.WSGetHostByAddr(NewClient.IP)); Posicao := AThread;//Aqui pego o Pointer do cliente para enviar tente usar WriteBuffer assim: AThread.Connection.WriteBuffer(AThread,sizeOf(NewClient)); AThread.Data := TObject(NewClient); .... try Clients.LockList.Add(NewClient); finally Clients.UnlockList; end; ...
GOSTEI 0
Rudá
16/04/2006
Eu queria fazer algo do tipo assim
var
Teste: PClient;
begin
New(Teste);
NewClient.IP:= AThread.Connection.Socket.Binding.PeerIP;
NewClient.Nome:= UpperCase(GStack.WSGetHostByAddr(NewClient.IP));
AThread.Connection.WriteBuffer(Teste,sizeOf(NewClient));
Mas não vai!
var
Teste: PClient;
begin
New(Teste);
NewClient.IP:= AThread.Connection.Socket.Binding.PeerIP;
NewClient.Nome:= UpperCase(GStack.WSGetHostByAddr(NewClient.IP));
AThread.Connection.WriteBuffer(Teste,sizeOf(NewClient));
Mas não vai!
GOSTEI 0
Rudá
16/04/2006
Não tem como transformar um pointer em Stream??
Como isso podemos enviar um stream!
Como isso podemos enviar um stream!
GOSTEI 0