私はネットワークを使ってオブジェクトを渡す簡単なプログラムをコーディングしようとしています。オブジェクトには静的データが含まれている可能性があるため、データを受け取った後に静的データがリセットされるため、そのデータをどのように渡すかわかりません。それはどのように可能ですか?ネットワーク経由でオブジェクトの静的データを渡すには?
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