Я пытаюсь закодировать простую программу для передачи объекта с использованием сети. Поскольку объект может содержать статические данные, я не знаю, как передать эти данные, потому что после получения данных статические данные будут сброшены. Как это возможно?Как передавать статические данные объекта по сети?
import java.io.*;
import java.net.Socket;
public class client {
private static int PORT = 8901;
private static Socket socket;
public static void main(String[] args) throws Exception{
socket = new Socket("localhost", PORT);
dataStruct ds = new dataStruct();
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
dataStruct.khar = 1;
oos.writeObject(ds);
oos.close();
}
}
class dataStruct implements Serializable{
static int khar = 0;
public void setData(int khar){
this.khar = khar;
}
}
Это мой клиент, и следующий мой сервер:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class test {
public static void main(String[] args) throws Exception {
ServerSocket listener = new ServerSocket(8901);
Game game = new Game();
Game.Player player1 = game.new Player(listener.accept(), 1);
player1.start();
}
}
class Game {
class Player extends Thread {
int turn;
Player opponent;
Socket socket;
ObjectInputStream input;
public Player(Socket socket, int turn) {
this.socket = socket;
this.turn = turn;
try {
input = new ObjectInputStream(socket.getInputStream());
} catch (IOException e) {
System.out.println("Player died: " + e);
}
}
public void run() {
try {
dataStruct ds = (dataStruct)input.readObject();
System.out.println(ds.khar);
} catch (Exception e) {
System.out.println("Player died: " + e);
} finally {
try {socket.close();} catch (IOException e) {}
}
}
}
}
Что вы хотите сказать? Вы видите ошибку с кодом, который вы опубликовали? Если так, то, что это? – user1875195