第一次用线程,达人帮我解决下问题 100分

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:30:33
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

class TCTalkListener extends Thread{

public static final int DEFAULT_PORT = 4099;
protected MulticastSocket mcSocket;
protected InetAddress groupAddress;
protected int port;
protected DatagramPacket dataPacket;
protected byte[] data;
protected final int PACKET_SIZE = 1024;
public String message="wwwwwwww";
private Thread t = new Thread(this);

public void init()
{

try{
groupAddress = InetAddress.getByName("239.66.69.18");
mcSocket = new MulticastSocket(4099);
mcSocket.joinGroup(groupAddress);
}
catch(Exception e)
{
e.printStackTrace();
}
t.start();
}

public void run()
{

while(true)
{
data = new

空指针异常 mcSocket为空 因为没有初始化

你的构造函数写错了
不应该是public void init()
而应该是public TCTalkListener()

因为你的run(),方法里的mcSocket没有实例化,你只在init()方法中实例化了mcSocket,所以你的mcSocket作用域不够。

你应该在run方法里在次实例化,或使用构造方法.

桔橙柚 正解

不应该是public void init()
而应该是public TCTalkListener()