Java android.os.NetworkOnMainThreadException但我的类扩展了线程
我有一个客户机类,它扩展线程以启动套接字编程Java android.os.NetworkOnMainThreadException但我的类扩展了线程,java,android,multithreading,sockets,nullpointerexception,Java,Android,Multithreading,Sockets,Nullpointerexception,我有一个客户机类,它扩展线程以启动套接字编程 我的班级代码 class MyClientMessages extends Thread { Socket socket; int PORT = 5002; DataInputStream din; DataOutputStream dout; public MyClientMessages(String IP) { try {
我的班级代码
class MyClientMessages extends Thread {
Socket socket;
int PORT = 5002;
DataInputStream din;
DataOutputStream dout;
public MyClientMessages(String IP) {
try {
System.out.println("IP = ======= " + IP + " TYPE = " + TYPE);
//*********** crash here ***************
socket = new Socket(IP,PORT); // *********** it crash here *************
din = new DataInputStream(socket.getInputStream());
dout = new DataOutputStream(socket.getOutputStream());
this.start();
}catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true) {
byte[] data = new byte[1024];
int size = 0;
try {
while ((size = din.read(data)) > 0) {
final String str = new String(data,"UTF8");
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView textView = new TextView(ServerChat.this);
textView.setTextSize(15);
textView.setText(str);
linearLayout.addView(textView);
}
});
}
}catch (IOException e) {
e.printStackTrace();
try {
dout.close();
din.close();
socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
public void WriteToSocket(byte[] arr,int size) {
try {
dout.write(arr,0,size);
dout.flush();
}catch (IOException e) {
e.printStackTrace();
try {
dout.close();
din.close();
socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
我在我的活动课上上这个课。我在服务器的activity类中有另一个类,它扩展了thread,工作正常。为什么这个客户端类崩溃并给我这个错误?下面是我在onCreate()函数中使用它的方法:
if (TYPE == 1) {
serverMessages = new MyServerMessages(5002);
Toast.makeText(this,"Room Started Wait clients To Join",Toast.LENGTH_LONG).show();
}
else {
clientMessages = new MyClientMessages(deConvert(mycode)); // crash here
Toast.makeText(this,"Connect To Room",Toast.LENGTH_LONG).show();
}
为什么这个客户端类崩溃并给我这个错误
因为您正在创建一个套接字
,并在构造函数中打开它。将该逻辑移到run()
中
为什么这个客户端类崩溃并给我这个错误
因为您正在创建一个套接字
,并在构造函数中打开它。将该逻辑移到run()
中