Fórum Erro assícrono 10049 #340487
17/04/2007
0
Estou tendo problemas com socket. Preciso desenvolver um sistema de troca de informações entre o servidor e as estações.
Ao efetuar os testes com dois terminais, lentamente, funciona beleza. Mas ao efetuar os testes de forma rápida e repetitiva, está gerando erro Assícrono 10049.
Segue abaixo o código do servidor e da estação:
***** código de solicitação das estações ************
procedure TForm2.Button12Click(Sender: TObject);
begin
ClientSocket1.address := ´192.168.0.101´; // conectando ao servidor
ClientSocket1.Active := True;
end;
procedure TForm2.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket1.Socket.SendText(´192.168.0.5´); // enviando IP_terminal
end;
procedure TForm2.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin // recebendo resposta
resp := Socket.ReceiveText; // resposta do servidor
ClientSocket1.Active := false;
end;
******* Programa no servidor ***************
OBS: recebe = ClientSocket
manda = ServerSocket
procedure TFOlho.mandaAccept(Sender: TObject; Socket: TCustomWinSocket);
begin // informa quem está conectando
IsServer := True;
label5.caption := ´Conectado a : ´ + Socket.RemoteAddress;
end;
procedure TFOlho.recebeRead(Sender: TObject; Socket: TCustomWinSocket);
begin // recebendo os dados da estação
terminal := Socket.ReceiveText;
Verifique;
end;
procedure TFOlho.mandaClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin // recebendo os dados da estação (aqui talvez não precise)
terminal := Socket.ReceiveText;
Verifique;
end;
procedure TFOlho.mandaClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
label5.caption := ´Aguardando Conexão...´;
end;
procedure TFOlho.Verifique;
begin
Recebe.Active := False;
// busco no BD quem está ativo
recebe.host := ´192.168.0.101´;
recebe.Active := True;
end;
procedure TFOlho.recebeConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
if IsServer then
manda.Socket.Connections[0].SendText(resp)
else
recebe.Socket.SendText(resp);
end;
Grato pela atenção.
Turbo Drive
Curtir tópico
+ 0Posts
17/04/2007
Massuda
Gostei + 0
17/04/2007
Turbo Drive
Se vc verificar o código que enviei, verá que a solicitação está em um botão. O meu teste consiste em pressionar o botão várias vezes apidamente. Quando eu faço isso em apenas um PC, executa perfeitamente. Agora se pressionar o botão várias vezes em dois PC´s, após uns 2 segundos, o programa no servidor pára de responder e joga o erro 10049.
Vc teria alguma idéia do que pode estar ocorrendo ?
Grato pela atenção.
Gostei + 0
17/04/2007
Massuda
Gostei + 0
17/04/2007
Turbo Drive
Vc teria alguma sugestão para acrescentar a este evento ?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)