La connessione socket funziona bene sull'emulatore ma non può inviare un dispositivo reale (J2ME)
Domanda
Sto sviluppando un'applicazione server / client. L'applicazione funziona bene su un emulatore ma quando lo testo su un Nokia 5200 o un Nokia 6303i, sebbene la connessione stabilisca correttamente, il server blocca il primo metodo di lettura.In altre parole, l'applicazione client (J2ME) non può inviare dati al server.
My Client Part:
Thread occ=new Thread(new Runnable() {
public void run() {
try {
SocketConnection sc = (SocketConnection)Connector.open("socket://213.233.169.142:2000");
sc.setSocketOption(SocketConnection.DELAY, 0);
OutputStream os=sc.openDataOutputStream();
DataOutputStream dos=new DataOutputStream(os);
InputStream is=sc.openDataInputStream();
DataInputStream dis=new DataInputStream(is);
//dos.writeUTF(receiverT.getString());
os.write("saalam".getBytes());
os.flush();
dos.writeUTF(Midlet.userPhoneNumber);
dos.flush();
dos.writeUTF(messT.getString());
dos.flush();
while((!dis.readUTF().equals("system-use:code=2")) && false)
{
}
dos.close();
os.close();
sc.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
occ.start();
.
My Server Part:
serverSocket = new ServerSocket(2000);
Socket socket=serverSocket.accept();
System.out.println("connection stablished");
inp=new DataInputStream(mySocket.getInputStream());
outp=new DataOutputStream(mySocket.getOutputStream());
receiverTemp=inp.read();//the server code blocks on this line
senderTemp=inp.readUTF();
.
.
.
.
. Soluzione 2
Il problema finalmente risolto. Il problema era che alcuni operatori mobili non consentono informazioni di invio / ricezione con prese RAW, quindi abbiamo utilizzato prese HTTP sulla porta 80 e ha funzionato.
Altri suggerimenti
Hai impostato le autorizzazioni socket nel file JAD?Questo fatto è molto importante per risolvere questo tipo di problemi nei dispositivi