Array
(
)

Usando idTCPServer e idTCPCliente ?

Aasn
   - 14 jan 2006

Olá pessoal,

tenho uma dúvida, utilizo os componentes idTCPServer e idTCPCliente para transmissao de dados entre filiais, e está funcionando bem, contudo, gostaria de saber se devo implementar algum controle extra sobre esses componentes uma vez que eles são MultiThread e ao meu ver eles deveriam ´a priori´ cuidar dessas múltiplas conexões automaticamente. Como os dados que transmito são em geral lotes pequenos, não sei se a ausência de erros se dá pelo fato de não ter ocorrido conexões simultâneas concorrentes.

[]´s
AASN


Massuda
   - 14 jan 2006


Citação:
...não sei se a ausência de erros se dá pelo fato de não ter ocorrido conexões simultâneas concorrentes.
Depende do erro que você está se referindo.

Erros de comunicação (dados corrompidos) não devem ocorrer se o protocolo de comunicação que você implementou entre o servidor e o cliente estiver OK (vamos chamar isso de protocolo da aplicação). O transporte dos dados (vamos chamar de protocolo físico, embora não seja exatamente isso) feito pelo TCP/IP é garantido como sendo livre de erros (os dados chegam livres de erro ou não chegam).

Geralmente problemas relacionados com concorrência/sincronismo ocorrem no tratamento dos dados que recebidos/transmitidos, seja no acesso à interface com o usuário, seja em processamento que envolva banco de dados. Por exemplo, via de regra, você não pode compartilhar uma conexão com banco de dados com várias threads (note que isso se aplica a qualquer caso que envolva multithread).


Aasn
   - 14 jan 2006

Caro Massuda,

os arquivos que são transmitidos entre servidor e cliente são scripts sql, com isso o servidor ao receber este arquivo criar uma instância do TIBOQuery e processa esse script.
Minha dúvida é que se duas filiais fizerem a conexão e transmissão ao mesmo tempo isso não acarretará um conflito no processamento, por parte do servidor, da criação e execução deste script ? Ou o servidor irá automaticamente controlar cada conexão separadamente ?

[]´s
AASN


Massuda
   - 14 jan 2006

Pelo que eu entendi, no seu caso, threads diferentes no servidor TIdTCPServer irão criar um TIBOQuery cada... eu não conheço esse componente de acesso ao IB, mas se esse componente (TIBOQuery) puder ser usado dessa forma em multithread, não há problema.