Pergunta

Estou desenvolvendo um programa que envia imagens a partir de um computador para outro (semelhante a assistência remota, sem a entrada do mouse / teclado). Os dois computadores que eu uso para testar esta são uma máquina Windows XP e um Windows Vista. Não tenho a máquina XP estacionária directamente ligado a um router, e um computador portátil o qual está ligado por meio de fio.

A transmissão do XP para o Vista funciona muito bem, eu sou capaz de conseguir um fluxo constante de imagens que são exibidas no Vista. No entanto, quando eu lançá-lo e enviar imagens do Vista para o XP não funciona. Eu também tentei uma "cópia" local, ou seja, sem a rede obter um fluxo de imagens e isso funciona no Vista, assim como XP. É exatamente o mesmo programa em ambas as máquinas.

Eu não acho que isso importe, mas eu estou usando GDI + para as imagens. Então eu enviar um .jpg através de um fluxo na rede e reconstruí-lo do outro lado.

classe

My Network mensagem é chamado NetMsg. que consiste em um char* type e uma char* data. os tipos determinar como eu interpretar os dados, sem problemas aqui.
Vamos chamar os computadores # 1 e # 2.
Quando a conexão é criada e eu marquei a área no nº 1 que eu quero enviar:
001> # 1 envia tipo RESIZE // para obter a janela no nº 2 do mesmo tamanho que a área que tenho marcado em # 1 | 002> # 1 envia tipo PICTURE_DATA // este é o real imagedata
003> # 2 após recebeu os dois acima mensagens, envia tipo REQUEST_MORE // # 2 quer mais imagedata
004> #go a etapa 1

Eu nem sequer se preocupou em depurá-lo ao enviar dados de imagem do XP para o Vista, já que ele funciona muito bem, exatamente como eu quero. No entanto, quando Vista envia para XP tenho notado o seguinte:

  • Os dados recebidos pode realmente ser dois NetMsgs. Eu tenho apoio a este, dividindo os dados em vários NetMsgs
  • Os dados recebidos pode ser incompleta, que é que eu tenho que esperar por mais dados. Eu tenho apoio a este, marcando um NetMsg como incompleta e na próxima datatransmission completá-lo. (Bem como a combinação do primeiro passo)

Isso quase fez o truque, porque eu tenho algumas imagens transferidas corretamente, no entanto, em seguida, parou de repente. Eu não tenho depurado isso completamente, então eu não sei por que os dados suddently parou .. No entanto:

O que eu não entendo é que isso funciona muito bem quando o envio do XP para o Vista, mas não o contrário. O que eu estou ausente?

Do deixe-me saber se você precisa de extratos de código, no entanto, é muito grande ... cerca de 500 linhas .. Caso contrário, eu estou procurando problemas conhecidos quando enviar dados do Vista para o XP.

Qualquer ajuda e / ou comentários apreciada!

Foi útil?

Solução 3

Na verdade, foi o bloqueio em ambos os computadores e ambos estavam à espera de outro para responder.

Outras dicas

É difícil dizer nada com certeza. No entanto, gostaria de sugerir fortemente que você escreva um conjunto de testes para o seu programa e implementar um caso de teste que chama a este problema particular. Isto tornará mais fácil para você reproduzir a falha, e muitas vezes é muito instrutivo para tentar produzir um caso de teste mínimo que pode demonstrar o problema. Além disso, quando você tem um caso de teste (totalmente automático), é também mais fácil de pedir a alguém para obter ajuda.

O que você realmente precisa fazer é descrever o problema em mais detalhes. Poderia haver 100 dos motivos por que "ele não está funcionando".

Você está recebendo todos os dados através?

Tente enviar apenas alguns bytes, eles passar?

Se nada está chegando, tente usar Wireshark, é Vista enviando os dados para fora?

é XP recebê-la?

Sem mágica aqui, você terá que verificar o caminho de dados do início ao fim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top