package BroadCast;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Server extends Thread {
private DatagramSocket sock;
public static boolean ServerUp = false;
// Wierdly not running this as a thread.
private void Server() {
try {
sock = new DatagramSocket(Constants.port);
ServerUp = true;
// Prints on console.
Constants.Server(Constants.ServerName
+ ", loaded sucessfully on port: " + Constants.port);
} catch (SocketException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server().start();
}
@Override
public void run() {
while (ServerUp) {
byte[] data = new byte[1024];
DatagramPacket Packet = new DatagramPacket(data, data.length);
try {
sock.receive(Packet);
} catch (IOException e) {
e.printStackTrace();
}
// Prints on console.
Constants.Server(new String(data).trim());
}
}
public void ServerData(byte[] data, InetAddress ip, int port) {
DatagramPacket Packet = new DatagramPacket(data, data.length, ip, port);
try {
sock.send(Packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
我运行了我的Server类的主void,它没有输出(就像它支持的那样)。但是当我把:
new Server().Server();
(运行服务器无效),它工作。但是,它不会正确循环(就像普通的线程一样)。 如果你能帮助我,那就太棒了(这可能是一个小错误)。
答案 0 :(得分:3)
问题是,令人困惑的是,
private void Server() {
声明一个名为Server
的方法,而不是构造函数。
要将其转换为构造函数,请删除void
:
private Server() {
完成此操作后,new Server().start()
应该有效。