0

Soket kullanarak grup sohbet programı yapıyorum ancak İleti nesnesini socket objectOutputStream nesnesine yazamıyorum. Sunucu tarafı objectInputStream hiçbir şey bulamadı (avalible = 0). Temizlemeye çalışıyorum ama işe yaramıyor. Lütfen adama yardım et.ObjectOutputStream nesneyi yazamıyor

enum MessageStatus implements Serializable {Mess, Offline}; 
public class Message implements Serializable{ 
String mess; 
String senderName; 
int senderID; 
MessageStatus type; 

public Message(String mess, int SenderID, String SenderName) { 
    this.mess = mess; 
    this.senderID = SenderID; 
    this.senderName = SenderName; 
} 

böyle yazmaya çalıştık:

Message msg = new Message(txtChat.getText().trim(), user.id, user.name); 
msg.type = MessageStatus.Mess; 
try { 
     user.Output.writeObject(msg); 
     user.Output.flush(); 

Benim soket Tamam, ben birkaç ip yazmak veya int denedim ve benim nesne çalışmak değil. Ben sever yan soket nesnesi inputStream iletinin veya nesne olarak almaya çalıştık ama benim nesne şey varsa

cevap

1

bilmek available() güvenmeyin prize yazılı edilmemiş düşünüyorum .ClassNotFoundException dışarı atmak gerçekten yüklemek için sadece engellemeden okunabilen bayt sayısını döndürür.

Message msg = new Message("Hello", 123, "world"); 
    System.out.printf("Before serialization = %s%n", msg); 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    ObjectOutputStream oos = new ObjectOutputStream(byteArrayOutputStream); 
    oos.writeObject(msg); 
    oos.flush(); 
    oos.close(); 
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); 
    ObjectInputStream ois = new ObjectInputStream(byteArrayInputStream); 
    System.out.printf("available = %d%n", ois.available()); 
    Message message = (Message) ois.readObject(); 
    System.out.printf("After deserialization = %s%n", message); 
    ois.close(); 

çıkışı:

Before serialization = Message{mess='Hello', senderName='world', senderID=123, type=Mess} 
available = 0 
After deserialization = Message{mess='Hello', senderName='world', senderID=123, type=Mess} 

Ben mesajı düzgün tefrika ve serileştirilemezse ama hala available döner 0 bir ile kanıtlıyor hangi görebiliriz

kodunuzu kullanarak bunu yaparsam Bu tür bir ihtiyaç için available güvenmemelisiniz.

+0

Efendim, çok ciddi bir yan soket nesnesine girdi akışında ileti veya nesne olarak almayı denedim ama dışarı attı .ClassNotFoundException Nesnemin sokete yazılmamış olduğunu düşünüyorum –

+0

Muhtemelen sınıfınız sunucunuz tarafından bilinmiyor . Sınıfınızın sunucunuzun sınıfında olup olmadığını kontrol edebilir misiniz? –

+0

Sunucuda da aynı sınıfa sahibim, Sir –