做了一个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,在浏览器可以显示页面,所以是访问内网是没有问题的。程序的访问英特网的权限也没问题。