大学向けの絞首刑執行人ゲームを開発しています。また、サーバーとクライアントを使用してソケットを介する必要があります。ゲームは今のところ問題なく動作します。
しかし、2 人で同じ単語を推測しようとすると、1 人のユーザーが選択した文字を知る必要があるため、他のユーザーの GUI でその文字を無効にすることができます。
だから、反対側のボタンを無効にするIDを持つレターオブジェクトを送信しようとしています。最初にメッセージを送信し、オブジェクトを送信することを警告しているので、例外は発生しません。
送信した最初の 2 つのオブジェクトのみを読み取ると、3 番目のオブジェクトでjava.io.StreamCorruptedExceptionという例外が発生します。誰でも理由を知っていますか?
Sending:
toClient= new DataOutputStream(socketConection.getOutputStream());
toClient.writeBytes("VK_Letra\n");
objectToClient= new ObjectOutputStream(socketConetion.getOutputStream());
objectToClient.writeObject(new Letter());
objectToClient.flush();
Receiving:
fromServer = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));
objectFromServer = new ObjectInputStream(socketCliente.getInputStream());
public void run(){
String str;
try{
while(true){
str = fromServer.readLine();
if(str.equals("VK_Letter")){
Letter l = (Letter) objectFromServer.readObject();
System.out.println(l.getLetter());
button[l.getId()].setEnabled(false);
}else{
chat.append(str+ "\n");
chat.setCaretPosition(chat.getDocument().getLength());
}
}
}catch(IOException | ClassNotFoundException e){
JOptionPane.showMessageDialog(/* Error Message */);
}
}