Ajuda em TCC - Bluetooth - Vários Clientes

Olá pessoal!

estou desenvolvendo uma aplicação Cliente-Servidor que usa comunicação via bluetooth. Preciso de dois celulares conectados a um PC. O problema é que só consigo a conexão de um cliente com o servidor por vez. Tem como conectar mais de um cliente com o servidor ao mesmo tempo?
Estou usando o protocolo RFCOMM. Na documentação JSR-82 diz que:
“The SPP service can accept multiple connections from different clients by calling acceptAndOpen()”. Tentei fazer isso mas ocorre o erro: BluetoothConnectionException: timeout. Eu na verdade só consigo conectar o segundo cliente quando qualquer o primeiro desconecta.

Segue trecho do código:

boolean listening = true;
boolean firstTime = true;
String cmd = “”;
while (true) {
System.err.println(“Listening…”);
try {
if (listening) {
System.err.println(“Aguardando Conexão 1!”);
conn1 = (StreamConnection) server.acceptAndOpen();
/--------- Client Connected waiting for incoming data –/
din1 = new DataInputStream(conn.openInputStream());
dout1 = new DataOutputStream(conn.openOutputStream());
listening = false;
firstTime = false;
System.err.println(“Cliente 1 conectado…”);
System.err.println(“Aguardando Conexão 2!”);
conn2 = (StreamConnection) server.acceptAndOpen();
din2 = new DataInputStream(conn2.openInputStream());
dout2 = new DataOutputStream(conn2.openOutputStream());

Sim, to usando windows XP e o driver bluesoleil 2.3, o meu dongle-USB é um multilaser AV00018ML.

Se alguém tiver ai um exemplo com mais de um cliente por favor mande!!!

Ajudem!!!
abraços,
Leydson

porque vc faz dois acceptAndOpen ?

vai travar mesmo…

depois do acceptAndOpen, crie uma Thread, e passe a conexão deste cliente para ela… e a thread faz o que tem que fazer com a inputstream/outputstream…

e depois disso você lê novamente o acceptAndOpen

Alterei o código da seguinte maneira:
while (true) {
System.err.println(“Listening…”);
try {
if (listening) {
System.err.println("Aguardando Conexões! "+clientsConnected);
conn = (StreamConnection) server.acceptAndOpen();
/--------- Client Connected waiting for incoming data –/
System.err.println(“Cliente conectado…”);
tratadores[clientsConnected] = new Thread(new TratadorDeConexao(conn, clientsConnected));
tratadores[clientsConnected].start();
clientsConnected++;

onde tratadores é um objeto da Classe TratadorDeConexao (implements Runnable), cujo código segue abaixo:

package systemBluetooth;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.io.StreamConnection;
import java.io.IOException;
/**
*

  • @author Administrador
    */
    public class TratadorDeConexao implements Runnable {

    StreamConnection connection;
    DataInputStream din;
    DataOutputStream dout;
    int cliente;

    public TratadorDeConexao(StreamConnection conn, int cliente){

     connection = conn;
     din = null;
     dout = null;
     this.cliente = cliente;
    

    }

    public void run(){

     try{
     
         din = new DataInputStream(connection.openDataInputStream());
         dout = new DataOutputStream(connection.openDataOutputStream());
    
     }catch(IOException ioe){
         
         System.err.println("Exceção ao capturar streams do cliente"+cliente);
     }
     
     while(true){
     
         System.err.println("Executando um cliente "+cliente);
         try{
             Thread.sleep(60000);
         }catch(InterruptedException ie){
             System.err.println("Exceção ao tentar dormir!");
         }
         
     }
    

    }

}

Quando conecto o primeiro cliente a saída apresentada é:

Inicializando Bluetooth
BlueCove version 2.1.0 on bluesoleil
Listening…
Aguardando Conexões! 0
Cliente conectado…
Listening…
Aguardando Conexões! 1
Executando um cliente 0
Executando um cliente 0
Executando um cliente 0

então faço uma busca com o outro dispositivo/celular e o mesmo encontra o servidor(o que acontecia com meu programa inicial), mas quando tenta conectar é disparada a exceção BluetoothConnectionException: timeout.
Ou seja, continua dando o mesmo erro…

No site da revista Mundo Java tem o código fonte do que vc quer, tá aí o link da edição 30 da revista http://www.mundojava.com.br/NovoSite/30codigos.shtml. Para entender melhor esse código aconselho comprar a revista.

Rapaz,

baixei a aplicação, compilei pelo netBeans com as bibliotecas que vem no projeto, executei o servidor de desktop e executei o cliente em dois celulares, consegui conectar o primeiro normalmente, enviei mensagem e tudo, mas quando tento conectar o segundo cliente dá um erro (aparece mensagem Erro! no celular ou Device not reachable!), e somente quando desconecto o primeiro cliente é que consigo conectar o segundo cliente… :s

Alguém testou esta aplicação? Se sim e se deu certo me fala a configuração do ambiente: windows vista, XP, linux … qual o dongle usb que tá usando e etc…

Teoricamente acho que meu servidor deveria funcionar normalmente aceitando várias conexões.

vlw!!