我正在尝试通过java套接字从服务器向客户端发送自定义对象,但是服务器会阻止该对象的发送。 这是调试的事情,我实际上并不是要发送一个对象,而是要发送对象列表,甚至是cardList类也包含卡片列表。
自定义对象的类是card
import java.io.Serializable;
公共类卡实现可序列化的{
public int valeur ;
public String type;
public String imageSrc;
public Card (int valeur , String type , String imageSrc) {
this.valeur=valeur;
this.type=type;
this.imageSrc=imageSrc;
}
}
对于服务器,我有ObjectStreamOutput
private class ServerSideConnection implements Runnable {
private Socket socket;
private DataInputStream dataIn;
private DataOutputStream dataOut;
private ObjectInputStream objectIn;
private ObjectOutputStream objectOut;
private int playerID;
private String playerName;
public ServerSideConnection (Socket s,int id) {
socket =s ;
playerID=id;
try {
dataOut = new DataOutputStream(socket.getOutputStream());
dataIn = new DataInputStream(socket.getInputStream());
objectIn = new ObjectInputStream(socket.getInputStream());
objectOut=new ObjectOutputStream(socket.getOutputStream());
}catch (IOException ex) {
System.out.println("IOExeption from SSC consturctor");
}
}
public void run() {
try {
dataOut.writeInt(playerID);
System.out.println(playerID);
dataOut.flush();
if(playerID==1) {
if(player2==null)
return;
player1.playerName=dataIn.readUTF();
player2.SendPlayerName(player1.playerName);
System.out.println("nom"+ player1.playerName);
}else{
player2.playerName=dataIn.readUTF();
player1.SendPlayerName(player2.playerName);
}
objectOut.writeObject(cardlist.cardList.get(0));
objectOut.flush();
System.out.println(cardlist.cardList.get(0).valeur);
while(true) {
}
}catch (IOException ex) {
System.out.println("IOException from run() SSC");
}
}
对于客户端,我有以下代码
private class ClientSideConnection {
private Socket socket;
private DataInputStream dataIn;
private DataOutputStream dataOut;
private ObjectInputStream objectIn;
private ObjectOutputStream objectOut;
public ClientSideConnection() {
System.out.println("---------Client------------");
try {
socket = new Socket ("localhost",51734);
dataOut = new DataOutputStream(socket.getOutputStream());
dataIn = new DataInputStream(socket.getInputStream());
monjoueur.playerID=dataIn.readInt();
System.out.println("monjoueur.playerID"+monjoueur.playerID);
sendName();
view.EnemyName.setText(dataIn.readUTF());
try {
cardList.cardList.add((Card)objectIn.readObject());
System.out.println((cardList.cardList.get(0).valeur));
} catch (ClassNotFoundException ex) {
}
System.out.println("Connected to server as player #"+ monjoueur.playerID);
}catch (IOException ex){
System.out.println(" IO Exception form CSC contructor");
ex.printStackTrace();
}
}