Duvidas com Bluetooth e (J2me+J2se)

Galera boa noite,
sou novo no GUJ…
Estou desenvolvendo uma aplicação para PC e Celular, onde o objetivo é transferir uma imagem do cel para o pc.
Estou tendo problema para conectar o pc ao celular…
Dando uma olhada no site descobri algumas coisas interesantes uma aplicação pronta para o servidor(pc) e para o cliente(celular).
O aplicativo do pc funciona blz, porém o do celular não realiza a conexão… estou com muitas duvidas se é por causa da url??? ou os passos da ativação que estou seguindo(primeiro roda o servidor, depois o cliente…)??? ou se esta faltando alguma coisa no codigo???

o codigo do servidor é esse:

[code]import java.io.IOException;

import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnectionNotifier;

class Conteste {
private static StreamConnectionNotifier conexao;
private static StreamConnectionNotifier conexaoCliente;

public static void main(String[] args) throws IOException {  
    UUID identificadorUnico = new UUID(0x1101);  
    String endereco = "btspp://localhost:" + identificadorUnico.toString() +";name=sethbrabluetooth";  
           
   // Inicializa a Pilha de Protocolos Java Bluetooh
    // e captura o objeto dispositivo local Bluetooth
    LocalDevice dispositivo = LocalDevice.getLocalDevice();
    
    // Cria um objeto para conexão do servidor, Create a server connection object, using a
    // utilizando o Serial Port Profile, especificando a URL e o UUID e definindo
    // o nome de serviço WebMobileRFCOMM
    conexao = (StreamConnectionNotifier)Connector.open(endereco);  

     
    
    // Existem 2 formas de definir o tempo de descoberta de um dispositivo
    // GIAC - General Inquiry Access Code - Significa que o dispositivo sempre ficará disponivel para descoberta
    // LIAC - Limited Inquiry Access Code - Significa que o dispositivo ficará por um tempo disponivel para ser
    // descoberto, após este tempo que é de aproximadamente 1 minutos ele se torna Indisponivel.        
    dispositivo.setDiscoverable(DiscoveryAgent.GIAC);
    
    String enderecoMac = dispositivo.getBluetoothAddress();  
    String canal = dispositivo.getRecord(conexao).getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);  
    System.out.println("MAC: " + enderecoMac + " canal:" + canal);  
    while(true){  
        System.out.println("Aguardando Clientes:");  
        conexaoCliente = (StreamConnectionNotifier) conexao.acceptAndOpen();
        
        System.out.println("Conectou");  
    }  
}  

}

[/code]

e esse é o do cliente:

[code]import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ClienteJ2Me extends MIDlet implements CommandListener {
private TextBox texto;
private Command sair;
private Display d;

public ClienteJ2Me() {  
    this.sair = new Command("Sair",Command.EXIT,0);  
    this.texto = new TextBox("","",40,TextField.ANY);  
    this.texto.setCommandListener(this);  
              
      
    this.texto.addCommand(this.sair);     
    this.d = Display.getDisplay(this);  
}  

protected void destroyApp(boolean arg0){  
}  

protected void pauseApp() {  
    // TODO Auto-generated method stub  

}  

protected void startApp() throws MIDletStateChangeException {  
    this.d.setCurrent(this.texto);  
    StreamConnection connection = null;  
    try {  
        connection = (StreamConnection)Connector.open("btspp://001F81000100:2",Connector.READ_WRITE,false);  
        System.out.println("Conectou");  
        connection.close();  
    } catch (IOException e) {  
        this.texto.setString("Erro ao tentar conectar : " + e.getMessage());  
        e.printStackTrace();  
    }     
}  

public void commandAction(Command arg0, Displayable arg1) {  
    if(arg0 == this.sair){  
        this.destroyApp(true);  
        this.notifyDestroyed();  
    }  
}  

}
[/code]

o celular que eu estou usando é um sony ericsson W302, sera que para essa plataforma o endereço do bluetooth ou a forma de conexão é diferente???
Se vc obsevarem no servidor tem um identificador unico UUID(0x1101);, já no celular o identificador é 001F81000100:2???pq???

Agradeço a ajuda.

depois que você abrir uma conexão StreamConnection
você cria um DataOutputStream e envia o conteúdo desejado.

DataOutputStream output = connection.openDataOutputStream();
output.writeUTF(img);
output.flush();
output.close();

esse objeto img será uma String que representa o conteúdo da imagem (pode ser capturado via File) e convertido pra base64 (no org.apache.commons tem uma classe Base64 e um método encode e decode)

danilowz Cara vlw…
porém o meu problema não esta no envio esta na conexão.
Quando eu crio no cliente conexao=(StreamConection)Conector.open(url); ele não conecta com o servidor. É essa a minha duvida, como eu faço pra conectar o cliente j2me com o servidor j2se? qual a url no servidor e no celular que eu deve usar? tem que ser a mesma no cliente e no servidor???
Mas de qualquer forma vlw msm cara…

Se o problema é na hora de conectar, confimas que a URL do seu dispositivo bluetooth no computador é 001F81000100? se não for nunca vai conectar.

a forma que conheço é uma receita de bolo.
primeiro você inicia a busca por dispositivos, se eu não me engano é o método startInquiry() da classe DiscoveryAgent. Nesse metódo você envia como parâmetro um DiscoveryListener que você terá que implementar.
essa interface tem os métodos que serão chamados automaticamente quando encontrar um dispositivo ou finalizar a “investigação”.
Depois de escolhido o dispositivo você procura os serviços disponíveis, e então pode começar a trocar informações.

hummm saquei galera…
ricoldi, o lance do UUID do pc blz…agora o do celular como eu faço pra saber???
nesse meu programinha o servidor ate roda fica “como se estivesse buscando o dispositivo”, porém no seu quando coloco pra rodar gera um erro e não conecta…