套接字连接在模拟器上工作正常,但无法在真实设备(J2ME)中发送



我正在开发一个服务器/客户端应用程序。该应用程序在模拟器上运行良好,但是当我在诺基亚5200或诺基亚6303i上测试它时,尽管连接成功建立,但服务器在首次读取方法时会阻止。换句话说,客户端(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();
 .
 .
 .
 .

您是否在 JAD 文件中设置了套接字权限?这一事实对于解决设备中的此类问题非常重要

问题终于解决了。问题是一些移动运营商不允许使用原始套接字发送/接收信息,所以我们在端口 80 上使用 HTTP 套接字,它工作了。

最新更新