Olá pessoal, desculpa estar ressuscitando o tópico, mas é que to precisando de uma ajudinha. To querendo fazer o mesmo squema, enviar um record via socket, só que não tá dando certo, o programa roda e trava, não fazendo nada nem dando erro algum, se alguém poder me ajudar agraedço muito. A idéia principal do programa é um tipo messenger via socket na rede (TCP). meu programa tá + ou - assim: type msg = packed record
texto: string;
nick: string;
end;
var mensagem:msg;
e para enviar to fazendo o seguinte: (no botão de enviar mensagem)
(cliente é ClientSocket e Servidor é ServerSocket, eu só mudei os nomes)
var MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
mensagem.texto := txtmensagem.Text;
mensagem.nick := txtnick.Text;
MyStream.WriteBuffer(mensagem,sizeof(mensagem));
cliente.Socket.SendBuf(MyStream.Memory^, SizeOf(MyStream));
end;
e para receber: (no socket do servidor, ClientRead)
var i:integer;
MsgRec : msgfrmt;
begin
Socket.ReceiveBuf(MsgRec,sizeof(MsgRec));
For i := 0 to Servidor.Socket.ActiveConnections-1 do
Servidor.Socket.Connections[i].SendBuf(MsgRec,sizeof(MsgRec));
end;
e finalmente, quando o cliente recebe (Onread do clientsocket) faço o seguinte: (memo1 é um memo ou um componente RichText)
var msgtmp:string;
msgrec:msgfrmt;
begin
socket.ReceiveBuf(msgrec,sizeof(msgrec));
msgtmp := '<' + msgrec.nick + '> ' + msgrec.texto;
memo1.Lines.Add(msgtmp)
end; Por favor quem puder me informar dos erros, agradeço!!!!!