Java 定义DataOutputStream和DataInputStream变量时出现问题

Java 定义DataOutputStream和DataInputStream变量时出现问题,java,networking,Java,Networking,出于某种原因,我在使用out、in和inUTF变量时遇到问题。 我尝试在不同的地方定义它们,并以不同的方式使用它们,但我似乎找不到解决方案。这是我的密码 public class Server { static ServerSocket serverSocket; static Socket socket; static DataOutputStream out; static DataInputStream in; static boolean running = false; stati

出于某种原因,我在使用out、in和inUTF变量时遇到问题。 我尝试在不同的地方定义它们,并以不同的方式使用它们,但我似乎找不到解决方案。这是我的密码

public class Server {

static ServerSocket serverSocket;
static Socket socket;
static DataOutputStream out;
static DataInputStream in;
static boolean running = false;

static int playerX;
static int playerY;
static int playerZ;

static String[] arrayX;
static String[] arrayY;
static String[] arrayZ;

static String inUTF;

public static void main(String args[]) throws Exception {
    running = true;
    System.out.println("Starting server");
    serverSocket = new ServerSocket(7877);
    System.out.println("Finished");

    out = new DataOutputStream(socket.getOutputStream());
    in = new DataInputStream(socket.getInputStream());
    inUTF = in.readUTF();

    while (running) {
        tick();
    }

}

public static void tick() {
    try {

        try {
            socket = serverSocket.accept();
        } catch (Exception e) {
            System.out.println("Something went wrong in the tick() loop: Could not accept client connection");
        }

        if (inUTF.startsWith("X")) {
            arrayX = inUTF.split(":");
            playerX = Integer.parseInt(arrayX[1]);
            out.writeUTF("X:" + playerX);

        } else if (inUTF.startsWith("Y")) {
            arrayY = inUTF.split(":");
            playerY = Integer.parseInt(arrayY[1]);
            out.writeUTF("Y:" + playerY);

        } else if (inUTF.startsWith("Z")) {
            arrayZ = inUTF.split(":");
            playerZ = Integer.parseInt(arrayZ[1]);
            out.writeUTF("Z:" + playerZ);

        } else {
            System.out.println("Something went wrong in the tick() loop: Did not receive a player position");
        }

    } catch (Exception e) {
        System.out.println("Something went wrong in the tick() loop");
    }
}

socket
尚未初始化,因此此
socket.getOutputStream()
将失败。顺便说一句,我无法理解您想要的逻辑非常感谢,我对Java编程非常陌生,几个小时来我一直在寻找解决方案。我正在制作一个多人游戏,我只是试图将信息从服务器发送到客户端。如果这是
服务器
,那么你不需要
套接字
,只需要
服务器套接字