Problema no acesso a servidor BlueTooth

Pessoal, estou desenvolvendo um programa com base no BlueChat(programa de conversa que usa BlueTooth) . O meu problema é que tem um momento que os celulares clientes enviam mensagens ao mesmo tempo, ou seja, acessam o servidor ao mesmo tempo.

Eu tentei usar synchronized, mas só piorou a situação, quando tiro o synchronized, this.wait(), etc , funciona menos pior , somente no final que dá problema.

O pedaço do código segue abaixo : (Esse código faz parte do servidor,é ele que faz a função de leitura do que os clientes escrevem)

         synchronized(this)
          { 
           if( cont == 0 || nomeGarçom.equals(endpt.remoteName) )
           {  
            arrayStringPedido[cont] = datain.readUTF();
            nomeGarçom=endpt.remoteName; 
            log("read in SIGNAL_SEND_PEDIDO name "+arrayStringPedido[cont]+" from "+endpt.remoteName);
            cont++;
           }
           else
           {
            try
            { 
              log(endpt.remoteName+" (NA ESPERA -- NA ESPERA -- NA ESPERA -- NA ESPERA -- NA ESPERA -- NA ESPERA) PARA ENVIO DE MEU PEDIDO");
              this.wait();
            }
            catch(InterruptedException e)
            {} 
           } 
          }
        }else if ( signal == NetLayer.SIGNAL_TERMINATE_SEND_PEDIDO ) 
        {
          datain.readUTF();


          PedidoRecordStore objPedidoRecordStore = new PedidoRecordStore ();
          // update the message screen to reflect the entered message.
          // create a dummy packet object to hold the entered message.
          ChatPacket packet = new ChatPacket( NetLayer.SIGNAL_TERMINATE_SEND_PEDIDO, endpt.remoteName,  "Pedido: "+(objPedidoRecordStore.buscaNumRecords()+1)+" acaba de chegar" );
          messageui.msgs.addElement( packet );
          messageui.repaint(); 
            

          log(" NetLayer.SIGNAL_TERMINATE_SEND_PEDIDO  --  NetLayer.SIGNAL_TERMINATE_SEND_PEDIDO (CONT VALUE:) "+cont);
          cont=0;
          objPedidoRecordStore.salvaPedido( arrayStringPedido );
      

          synchronized(this)
          { 
           this.notifyAll();
          }

        }

Pessoal, vou detalhar mais:

Eu quero fazer que o servidor seje bloqueado quando um cliente estiver usando ele. Eu tentei , mas acho que está acontecendo o seguinte: Quando o primeiro cliente manda mensagens ,e outro cliente manda logo depois (enquanto o primeiro ainda está mandando)o servidor é bloqueado ( this.wait() ) e aí dá problema pros dois clientes … Acaba que dá maior bagunça e eu não consigo o sucesso …

Quando eu tiro o synchronized, this.wait(), notifyAll() funciona bem (acho que porque cada cliente cria uma instância própria do servidor pra ele, então funciona bem). Mas, no final, quando checo no servidor, vejo que perdeu o sincronismo e afeta no funcionamento do uso de uns RecordStores que eu tenho …

Pessoal, preciso muito da ajuda de alguém … Se quiserem (acho que vai ser melhor) posso mandar o projeto pra vcs entenderem melhor o que estou dizendo. Mas, se alguém já teve a mesma experiência e conseguiu a solução , por favor , me ajude , tb.

Obrigado,

Raphael.

[size=“11”]
[color=“red”]

  • Editado: Lembre-se de usar BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários - Matheus[/color][/size] :joia:

Uma dúvida galera:

Um método com synchronized , mas sem o método wait ou notify dentro dele,não modifica nada , né? vai ter o mesmo funcionamento se não tivesse o synchronized,né?

Kr, tem como vc me passar o codigo do BlueChat, e a Jsr dele!

To perdidao, se poder me ajudar??

Muito Obrigado!

Me fala seu e-mail , q eu te passo todo o projeto.

mayconleo@yahoo.com.br

Valew

manda pra nóis também:
augustocss@hotmail.com

:twisted:
Não esqueçam do Tuba.

Aquele abraço galera.

Olá se puder me mandar por e-mail
posso dar uma olhada

crispinzetta@yahoo.com.br

abraços