【发布时间】:2019-06-29 01:45:17
【问题描述】:
我正在尝试创建一个聊天应用程序(是的,我知道,不是很有创意)并且我想将套接字变量的值传输到其他方法中。
但是我很困惑我该怎么办?
我已经尝试过将其作为参数传递,但由于某种原因不起作用,还尝试在方法之外声明变量,这也不起作用。
public void DeclaringVariables() throws IOException{
InetAddress group = InetAddress.getByName("239.255.255.255");
int port = 1201;
Scanner sc = new Scanner(System.in);
System.out.print("Enter your name: ");
name = sc.nextLine();
MulticastSocket socket = new MulticastSocket(port);
// Since we are deploying
socket.setTimeToLive(0);
//this on localhost only (For a subnet set it as 1)
socket.joinGroup(group);
Thread t = new Thread(new
ReadThread(socket,group,port));
// Spawn a thread for reading messages
t.start();
}
/**
*
*/
public void SendButton() {
try {
while(true) {
String message;
message = sc.nextLine();
if(message.equalsIgnoreCase(GroupChat.TERMINATE))
{
finished = true;
socket.leaveGroup(group);
socket.close();
break;
}
message = name + ": " + message;
byte[] buffer = message.getBytes();
DatagramPacket datagram = new
DatagramPacket(buffer,buffer.length,group,port);
socket.send(datagram);
}
}
catch (IOException ex) {
Logger.getLogger(ChatGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
【问题讨论】:
-
@Spara - 除非有充分的理由(常量、单例(少量)等),否则应避免使用静态 - 要访问同一类中的任何内容,拥有一个实例变量就足够了,而不是静态的.
-
I've already tried passing it off as an argument which for some reason doesn't work它应该可以工作。请张贴代码。 -
你能展示你正在写的完整课程吗?此外,Java 中的方法名称应使用小写形式,即
declaringVariables()和sendButton() -
@Spara 不是,它是一个局部变量
-
@Spara 不应该。它应该是每个实例一个,而不是每个 JVM 一个。
标签: java variables inheritance