为何真机上TCP连不到公网服务器,模拟器没问题?

huruihappy 2010-03-16 12:27:52
简单的测试代码,模拟器正常,真机不行。 怎么解决。
/*
* 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){

}

}
}
...全文
154 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jesse_____ 2012-03-09
  • 打赏
  • 举报
回复
请问楼主117.40.91.183是什么IP,我不论写内网IP还是公网IP都连接不上、
surpassly 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huruihappy 的回复:]
阻塞到了通讯信道
[/Quote]
请问你的服务器端是怎么改的 能说一下吗
huruihappy 2010-03-18
  • 打赏
  • 举报
回复
自己解决了问题 。手机肯定支持
huruihappy 2010-03-18
  • 打赏
  • 举报
回复
阻塞到了通讯信道
huruihappy 2010-03-18
  • 打赏
  • 举报
回复
服务器回数据包太快引起的,服务端改了下 就OK了。
梦_枫 2010-03-18
  • 打赏
  • 举报
回复
那LZ是怎么解决的了,,分享一下。。。。
zhlwwj1314 2010-03-17
  • 打赏
  • 举报
回复
你的手机支持socket么
还有接入点选的什么
huruihappy 2010-03-16
  • 打赏
  • 举报
回复
```
yinjiahjk11 2010-03-16
  • 打赏
  • 举报
回复
帮顶吧,呵呵。。。。。。。。。
ublearning 2010-03-16
  • 打赏
  • 举报
回复
友情帮顶
huruihappy 2010-03-16
  • 打赏
  • 举报
回复
这个不是主要问题,测试的单元,和MIDLET写没什么大问题。
模拟器能正常接受,在真机上不行,一点返回的数据都没有。
梦_枫 2010-03-16
  • 打赏
  • 举报
回复
真机出现什么状况了?????
连网线程应该要与主线程MIDLET分开,不然容易引起死机,程序疆死等问题。。
梦_枫 2010-03-16
  • 打赏
  • 举报
回复
先友情帮顶。。。。。。。。。。。。。
huruihappy 2010-03-16
  • 打赏
  • 举报
回复
自己顶

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧