当前位置:编程学习 > wap >>

已经做好的socket小程序,在模拟器运行正常,真机调试就停止运行,求帮吗

做了一个socket通信实验,目的想用手机通过socket通过外网和内网的Serversocket实现通信。
我给路由设置了映射10000到本机的ip,然后用路由的外网ip+映射端口,在模拟器上运行是没有问题的。

然后把程序移植到手机运行,在Wifi模式下运行也是没有问题的。
然后我把wifi关了,用数据服务,结果就停止运行了。
测试是in.readline();执行这句直接停止运行,也没捕捉到异常。

附程序

package com.example.connect;

import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;

import java.io.BufferedReader;  
import java.io.IOException;
import java.io.InputStreamReader;  
import java.io.PrintWriter;  
import java.net.Socket;  
import android.app.Activity;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

EditText show;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (EditText) findViewById(R.id.show);
show.setText("qwe");
new Thread(new Runnable(){
    @Override
    public void run() {
     try
{
Socket socket = new Socket("183.211.168.222" , 10000);
show.setText("1");
//将Socket对应的输入流包装成BufferedReader
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
show.setText("2");
//进行普通IO操作
String line = br.readLine();
show.setText("来自服务器的数据:" + line);

//br.close();
//socket.close();
}
catch (IOException e)
{
show.setText(e.toString());
}
catch (Exception e)
{
show.setText(e.toString());
}
    }
}).start();

}
}


求帮忙啊,现在一头雾水,我的手机可以通过数据服务访问本机的iis,在浏览器可以显示页面,所以是访问内网是没有问题的。程序的访问英特网的权限也没问题。
--------------------编程问答-------------------- 求大神帮助啊,不想沉
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,