gpt4 book ai didi

Java 线程未启动?

转载 作者:行者123 更新时间:2023-12-01 23:11:36 26 4
gpt4 key购买 nike

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();
}
}
}

我为我的服务器类运行了 main void,它没有输出(就像它所支持的那样)。但是当我输入:

new Server().Server();

(运行服务器无效),它起作用了。但是,它不会正确循环(就像普通线程一样)。如果您能帮助我,那就太好了(这可能是一个小错误)。

最佳答案

问题在于,令人困惑的是,

private void Server() {

声明一个名为Server的方法,而不是构造函数

要将其转换为构造函数,请删除 void:

private Server() {

完成此操作后,new Server().start() 应该可以工作。

关于Java 线程未启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com