GARANTIR DESCONTO

Fórum Corrompendo a mensagem SOCKET #347442

17/10/2007

0

Olha só, tenho uma aplicação para Lan House que se comunicam (Cliente e Servidor) por sockets. Até aí tudo bem, mas em algumas máquinas aleatórias a mensagem enviada chega errada no Cliente. Meu protocolo é delimitado por linhas e às vezes a mensagem pula uma linha.
Alguém já viu esse tipo de erro?


Grandeneo

Grandeneo

Responder

Posts

18/10/2007

Massuda

Se você estiver usando TCP, então o erro é no seu programa. O protocolo TCP garante que os pacotes de chegam corretamente no destino.

Se estiver usando UDP, pode ocorrer perda de pacote de dados, mas isso é previsto no protocolo e não há como evitar isso.


Responder

Gostei + 0

05/11/2007

Grandeneo

Veja bem....eu envio assim:

<comando1>mostre janela
<comando2>fecha programa
<comando9>sair

e recebo assim:

<coman
do1>mostre janela
<comando2> fecha j
anela
<
comando9>
sair


tem alguma maneira de prever issu?


Responder

Gostei + 0

05/11/2007

Massuda

Como você está lendo esses dados? Mostre o código.


Responder

Gostei + 0

05/11/2007

Grandeneo

no Servidor:

for I:= 0 to SS.Socket.ActiveConnections- 1 do
SS.Socket.Connections[I].SendText(Memo1.Text);


no Cliente:

procedure TFCli.CSRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Text:= Socket.ReceiveText;
end;

tentei tb fazer issu com o SendBuffer mas tb dá errado.


Responder

Gostei + 0

06/11/2007

Massuda

Agora que percebi que você está usando TServerSocket/TClientSocket (ou coisa parecida)... não conheço esses componentes, mas sugiro você receber os dados no cliente e ir acumulando (por exemplo, em uma string) até ter um comando completo e só aí tratar o comando.

TCP garante a chegada dos dados na ordem que eles foram enviados, mas não garante que eles cheguem todos juntos, o que, aparentemente, é o que está acontecendo com você.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar