我写了一个avtivity,代码如下: super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button reg = (Button) findViewById(R.id.regButton);
reg.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
EditText hostEle = (EditText) findViewById(R.id.apnHost);
Editable host = hostEle.getText();
EditText portEle = (EditText) findViewById(R.id.apnPort);
Editable port = portEle.getText();
Log.i("liangyf.mobile.terminal", "APN[" + host.toString() + ","
+ port + "]");
try {
DatagramSocket socket = new DatagramSocket(4567);
InetAddress serverAddress = InetAddress
.getByName("10.0.2.2");
String str = "hello";
byte data[] = str.getBytes();
DatagramPacket packet = new DatagramPacket(data,
data.length, serverAddress, 9999);
socket.send(packet);
} catch (SocketException e) {
Log.e("liangyf.mobile.terminal", "发生异常:", e);
} catch (IOException e) {
Log.e("liangyf.mobile.terminal", "发生异常:", e);
}
}
});
同时我在开发机(运行模拟器的机器)上开启了9999端口侦听,但是当运行app进行连接时发生错误:
05-17 05:35:28.122: E/AndroidRuntime(624): FATAL EXCEPTION: main
05-17 05:35:28.122: E/AndroidRuntime(624): android.os.NetworkOnMainThreadException
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-17 05:35:28.122: E/AndroidRuntime(624): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
05-17 05:35:28.122: E/AndroidRuntime(624): at libcore.io.IoBridge.sendto(IoBridge.java:463)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.net.DatagramSocket.send(DatagramSocket.java:287)
05-17 05:35:28.122: E/AndroidRuntime(624): at liangyf.mobile.terminal.TerminalSimulatorActivity$1.onClick(TerminalSimulatorActivity.java:44)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.view.View.performClick(View.java:3511)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.view.View$PerformClick.run(View.java:14105)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Handler.handleCallback(Handler.java:605)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Handler.dispatchMessage(Handler.java:92)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Looper.loop(Looper.java:137)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.lang.reflect.Method.invoke(Method.java:511)
05-17 05:35:28.122: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-17 05:35:28.122: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-17 05:35:28.122: E/AndroidRuntime(624): at dalvik.system.NativeStart.main(Native Method)我已经对app添加了android.permission.INTERNET权限:
<uses-permission android:name="android.permission.INTERNET"/>
有知道的告诉我怎么回事?
setContentView(R.layout.main);
Button reg = (Button) findViewById(R.id.regButton);
reg.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
EditText hostEle = (EditText) findViewById(R.id.apnHost);
Editable host = hostEle.getText();
EditText portEle = (EditText) findViewById(R.id.apnPort);
Editable port = portEle.getText();
Log.i("liangyf.mobile.terminal", "APN[" + host.toString() + ","
+ port + "]");
try {
DatagramSocket socket = new DatagramSocket(4567);
InetAddress serverAddress = InetAddress
.getByName("10.0.2.2");
String str = "hello";
byte data[] = str.getBytes();
DatagramPacket packet = new DatagramPacket(data,
data.length, serverAddress, 9999);
socket.send(packet);
} catch (SocketException e) {
Log.e("liangyf.mobile.terminal", "发生异常:", e);
} catch (IOException e) {
Log.e("liangyf.mobile.terminal", "发生异常:", e);
}
}
});
同时我在开发机(运行模拟器的机器)上开启了9999端口侦听,但是当运行app进行连接时发生错误:
05-17 05:35:28.122: E/AndroidRuntime(624): FATAL EXCEPTION: main
05-17 05:35:28.122: E/AndroidRuntime(624): android.os.NetworkOnMainThreadException
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-17 05:35:28.122: E/AndroidRuntime(624): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
05-17 05:35:28.122: E/AndroidRuntime(624): at libcore.io.IoBridge.sendto(IoBridge.java:463)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.net.DatagramSocket.send(DatagramSocket.java:287)
05-17 05:35:28.122: E/AndroidRuntime(624): at liangyf.mobile.terminal.TerminalSimulatorActivity$1.onClick(TerminalSimulatorActivity.java:44)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.view.View.performClick(View.java:3511)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.view.View$PerformClick.run(View.java:14105)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Handler.handleCallback(Handler.java:605)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Handler.dispatchMessage(Handler.java:92)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.os.Looper.loop(Looper.java:137)
05-17 05:35:28.122: E/AndroidRuntime(624): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 05:35:28.122: E/AndroidRuntime(624): at java.lang.reflect.Method.invoke(Method.java:511)
05-17 05:35:28.122: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-17 05:35:28.122: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-17 05:35:28.122: E/AndroidRuntime(624): at dalvik.system.NativeStart.main(Native Method)我已经对app添加了android.permission.INTERNET权限:
<uses-permission android:name="android.permission.INTERNET"/>
有知道的告诉我怎么回事?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货