我有两个实例:在主类中作为公共实例的套接字和数据包,但是我无法从其他类访问它们,并且它们在同一包中。
我明白了:找不到它们的符号。
public class enviar extends TimerTask {
public void run() {
socket.send(packet);
}
}
public class UDP_Client {
public static DatagramSocket socket;
static InetAddress address;
public static DatagramPacket packet;
public static void main(String args[]){
final int puerto = 3000;
try{
socket = new DatagramSocket();
address = InetAddress.getByName("localhost");
byte[] buf = payload.MSG.getBytes();
packet = new DatagramPacket(buf, buf.length, address , puerto);
while(true){
Timer timer = new Timer();
timer.schedule(new enviar(), 0, 50);
}
}catch(IOException e){
System.out.println(e);
}
}
}
谢谢队友!
答案 0 :(得分:1)
问题是您没有告诉Java在哪里可以找到socket
和packet
字段。如果指定包含它们的类,它将解决您的问题。您的代码应如下所示:
UDP_Client.socket.send(UDP_Client.packet);
这将起作用,但是您也可以在enviar
文件中静态导入字段,这样就不需要类名标识符。
import static package.to.UDP_Client.socket;
import static package.to.UDP_Client.packet;
然后您可以按原样保留代码。