2012-09-29 36 views
0

我正在開發服務器/客戶端應用程序。該應用程序在仿真器上正常工作,但是當我在諾基亞5200或諾基亞6303i上測試時,儘管連接建立成功,但服務器會先阻止第一次讀取方法。換句話說,客戶端(j2me)應用程序無法將數據發送到服務器。套接字連接在仿真器上工作良好,但無法在實際設備上發送(j2me)

我的客戶端部分:

 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(); 

我的服務器部分:

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(); 
. 
. 
. 
. 

回答

0

問題終於解決了,問題在於一些移動運營商不允許使用原始套接字發送/接收信息,因此我們在端口80上使用了HTTP套接字,工作。

0

你有沒有在JAD文件中設置插座的權限?這個事實對於解決設備中的這類問題非常重要

相關問題