首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

为何真机下TCP连不到公网服务器,模拟器没有关问题

2012-12-26 
为何真机上TCP连不到公网服务器,模拟器没问题?简单的测试代码,模拟器正常,真机不行。 怎么解决。/* * To cha

为何真机上TCP连不到公网服务器,模拟器没问题?
简单的测试代码,模拟器正常,真机不行。 怎么解决。
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;

/**
 * @author Administrator
 */
public class NetTestMid extends MIDlet implements Runnable,CommandListener {

    private Display display = null;

    private SocketConnection socketClient = null;
    
    private DataInputStream  dis = null;

    private DataOutputStream  dos = null;

    Thread netThread = null;

    byte[] tmpByte = new byte[8] ;
    
    Form frm = new Form("Test");

    private Command loginCmd = new Command("启动线程",Command.OK,1);
    private Command exitCmd = new Command("退出",Command.EXIT,1);

    int waitCount = 0 ;

    byte tmpB ;

    public void startApp() {

        display = Display.getDisplay(this);

        frm.append("NetTest");

        frm.addCommand(loginCmd);
        
        frm.addCommand(exitCmd);

        frm.setCommandListener(this);

        display.setCurrent(frm);

        //System.out.println("start thread");

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    //synchronized
    public  void run()
    {
        try{

          socketClient = (SocketConnection)Connector.open("socket://117.40.91.183:20100");//连接服务端
        
          socketClient.setSocketOption(socketClient.KEEPALIVE, 20);
          
          dis = socketClient.openDataInputStream();

          dos = socketClient.openDataOutputStream();

          //dos.writeUTF("sender IP :" + socketClient.getLocalAddress() );
          dos.writeUTF("sender IP :");
          //System.out.println("sender IP :" + socketClient.getAddress());

          frm.append( "sender IP :" + socketClient.getLocalAddress() );



          while(dis.read(tmpByte) != -1 )
          {
                 //dis.read(tmpByte);

                 String s = new String(tmpByte);

                 //System.out.println("Client receive message from server: " + s );

                 //Alert alert = new Alert("Client receive message from server");

                 //alert.setString("Client receive message from server  " + s);

                 //alert.setType(AlertType.INFO);

                 //alert.setTimeout(3000);

                 //display.setCurrent(alert);
                  frm.append("Client receive message from server: " + s );

                 s = null ;

                 try{

                     netThread.sleep(100);
                     waitCount++;

                     if( waitCount >= 200)
                     {
                        frm.append("重连");
                        waitCount = 0 ;
                        dos.writeUTF("sender IP :" + socketClient.getLocalAddress() );
                        frm.append( "sender IP :" + socketClient.getLocalAddress() );
                     }
                 }
                 catch(InterruptedException e){}
           }

        }
        catch(IOException e)


        {
           try{
           dis.close();
           dos.close();
           socketClient.close();
           }
           catch(IOException ee){}

           frm.append("连接异常" + e.toString());
        }
    }

     public void commandAction(Command cmd,Displayable displayable){
            if(cmd==loginCmd){
              //登陆时候启动LoginHandle
             //启动Net线程
             Thread netThread = new Thread(this);
                    netThread.start();
            }else if(cmd == exitCmd){

              }

     }
}

[解决办法]
先友情帮顶。。。。。。。。。。。。。
[解决办法]
真机出现什么状况了?????
连网线程应该要与主线程MIDLET分开,不然容易引起死机,程序疆死等问题。。

[解决办法]
友情帮顶
[解决办法]
帮顶吧,呵呵。。。。。。。。。
[解决办法]
你的手机支持socket么
还有接入点选的什么
[解决办法]
那LZ是怎么解决的了,,分享一下。。。。

热点排行