我正在使用示例來了解Android中的套接字的使用。我對此很陌生,我正在用書來學習。 我真的不知道問題是什麼,因爲這個例子實際上是從本書複製的,除了IP,這是我的電腦。 Android應用程序不斷拋出此錯誤:ANDROID HELP!錯誤:android.os.NetworkOnMainThreadException
錯誤:android.os.NetworkOnMainThreadException
我張貼代碼:
因爲有些話是在西班牙,我會翻譯它們對你來說,以防萬一它使它更易於理解:
PUERTO - > port,ENTRADA - > input,SALIDA - > output,ENVIANDO - >發送,HOLA MUNDO - > hello world,RECIBIENDO - >接收,DATOS-- > data,CLIENTE - > client
ANDROID CLIENT
package com.jacho981.clienteecho;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ClienteECHO extends Activity {
private TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cliente_echo);
output = (TextView) findViewById(R.id.TextView01);
ejecutaCliente();
}
private void ejecutaCliente() {
// String ip = "158.42.146.127";
String ip = "192.168.1.3";
int puerto = 7;
log(" socket " + ip + " " + puerto);
try {
Socket sk = new Socket(ip, puerto);
BufferedReader entrada = new BufferedReader(new InputStreamReader(
sk.getInputStream()));
PrintWriter salida = new PrintWriter(new OutputStreamWriter(
sk.getOutputStream()), true);
log("enviando...");
salida.println("Hola Mundo");
log("recibiendo..." + entrada.readLine());
sk.close();
} catch (Exception e) {
log("error: " + e.toString());
}
}
private void log(String string) {
output.append(string + "\n");
}
}
Java服務器
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServidorECHO {
public static void main(String args[]) {
try {
ServerSocket sk = new ServerSocket(7);
while (true) {
Socket cliente = sk.accept();
BufferedReader entrada = new BufferedReader(
new InputStreamReader(cliente.getInputStream()));
PrintWriter salida = new PrintWriter(new OutputStreamWriter(
cliente.getOutputStream()), true);
String datos = entrada.readLine();
salida.println(datos);
cliente.close();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
之前,你有感嘆號問,我想你退後一步,看看你的錯誤,「網絡上的主線程例外」。谷歌搜索這個錯誤會告訴你多個結果,幫助你修復它。您需要從主線程中取消網絡代碼。 – hexafraction
http://stackoverflow.com/a/18678258/826657看到這個! –
標題中的networkonmainthreadexception的任何問題的副本。 – njzk2